mac下解决中文编码问题

时间:2022-06-01 17:01:22

what

sublime是个很好用的工具,但是相信大家都遇到过一个很困扰大家的问题:打开一个文件,里面的中文都是乱码。

why

原因是sublime对GBK和GB2312编码不支持,而很多编辑器都使用GBK,遇到中文等超出ascii范围的编码都不能解析。

how

网上搜索到一些解决方案,其中最方便的是使用命令行安装package control后,安装“ConvertToUTF8”或“GBK Encoding Support”插件。

具体步骤:

  • Control+‘~’打开控制台

  • 如果是Sublime Text3,输入

    import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
  • Sublime Text2:

    import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
  • 安装后重启

  • command+shift+p,输入Install package

  • 输入“ConvertToUTF8”或“GBK Encoding Support”,然后回车安装

  • 重启后就可以看到中文了。

however

如果你一路畅通,现在已经能正常显示GBK了,那么后面的废话就可以不用看了。可能网控或其他原因,我的直接安装过程是不成功的,只能另辟蹊径。

then

手动下载插件,拷贝到对应目录下。

Convert​To​UTF8

https://github.com/seanliang/ConvertToUTF8

  • 按照上述url,进入后,点击Download zip下载zip文件,解压,改名为ConvertToUTF8

  • 找到packages目录,简单方式,打开sublime–Preference–Browse Packages,进入Packages目录,把上一步骤的文件夹拷贝过来

Codecs33

https://github.com/seanliang/Codecs33/tree/osx
- 接着下载

  • 接着改名:Codecs33

  • 接着拷贝

好了,Congratulations, 重启一下Sublime,相信已经大功告成!