最近使用xhsell做和中文有关的任务,经常被编码问题弄得头疼
主要原因还是windows和linux系统里面的编码不一致导致的,其次Python2和python3对编码的支持不同也会导致各种编码问题的出现。
windows记事本默认编码为ANSI,ANSI即为ASCII编码,为一个字节,只用到0~127号字符。
windows默认编码为GBK,是在ANSI基础上演变出来的,包含两个字节,其中中文编码与Unicode的中文编码不一样。
Unicode编码为万国码,包含几乎世界上的所有字符,一般情况下为两个字节。
UTF-8为Unicode的一种实现编码,Unicode编码可以通过一定的规则进行转变。
1 | |
从上面的结果可以看到
直接在linux使用python和在windows使用pycharm都不会出现任何问题。
系统的编码问题确实对unicode的使用产生了很大的影响,尤其是xshell这个环境会存在着unicode转ascii 然后转unicode的问题
对于这个问题,网上众说纷纭,但是找不到一个很好的解决办法
目前尝试的比较好用的方法:
1 | |
1 | |
可以看到上面这个实验说明了所有不同现象的原因
此外在tmux中也会发现这个问题
locate charmap
发现修改export LANG=zh_CN.UTF-8可以解决问题