标签:好的 个数 linux 不兼容 字符数组 解码 windows 中文 查看
https://www.zhihu.com/question/28164512
关于编码和乱码的问题,我简单讲一下。
通常问这类问题的人是混淆了若干个不同的概念,并且他们自己也没有意识到自己混淆了这些概念的。
拿题主的问题来解释一下。
我在ubuntu kylin中文环境下默认terminal中做了同样的实验,但是结果和题主恰好相反:
看见没有?
题主和我都没有说谎,这是为什么呢?
因为
unicode("汉字","gb2312")
这坨代码的含义实际上是:将这里显示的这坨看上去像“汉字”的东西,用gb2312解码,转换为unicode字符串。unicode("汉字","utf-8")类似,只不过是用utf-8解码,转成unicode字符串。
(注:这里涉及到两个概念——unicode字符集和utf-8编码——很多时候会用混淆,一个字符集表示一堆符号,而一种编码是用二进制表示这个字符集的一种编码方式。同样是unicode字符集,可以有utf-8、utf-16、utf-32等等编码方式。)
那这里显示的看上去像“汉字”的,tmd的到底是个什么东西?
这也就是我为什么一直反对在程序文本中使用除ascii之外的所有编码字符的原因。环境太复杂了,绕开问题远比解决问题轻松。
标签:好的 个数 linux 不兼容 字符数组 解码 windows 中文 查看
原文地址:http://www.cnblogs.com/xiaoerlang/p/7676765.html