首页
社区
课程
招聘
[求助]字符编码问题
发表于: 2011-10-20 17:46 4476

[求助]字符编码问题

2011-10-20 17:46
4476
最近一直在思考字符编码的问题
举个例子,在python的交互式编程界面中

>>> "中国".encode('gbk')
b'\xd6\xd0\xb9\xfa'

我的困惑是,“中国”这个程序中的字面量的编码是什么呢
正常来说,任何计算机上的东西必然会存在在
系统的某个地方,或者是内存
或者是硬盘,或者是CPU,
那么这个“中国”一定是存在在系统的某个地方
而且它能够在显示器上显示为“中国”的字样
这个东西具体是什么呢?
他的编码是什么呢?
通过encode('gbk')进行编码时
encode怎么知道这个东西代表的是“中国”

在举个例子:
>>> "中国".encode('utf-8')
b'\xe4\xb8\xad\xe5\x9b\xbd'

>>> "中国".encode('cp936')
b'\xd6\xd0\xb9\xfa'

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在C:\Windows\system32下有很多nls文件
2011-10-20 19:43
0
雪    币: 705
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
不知道你用的哪个版本的python, 我用2.7的话,u"中国".encode('utf-8')才可以。
好像3.0之后默认的字符串都是unicode编码,所以"中国"就是unicode编码,然后用encode转码
2011-10-20 19:57
0
雪    币: 260
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
"中国" unicode =u'\u4e2d\u56fd' 这个你可以理解为任意计算机上任意语言中都是唯一对应的unicode码。这个'\xd6\xd0\xb9\xfa'是中文系统下的内码,在中文系统下'\xd6\xd0\xb9\xfa'代表“中国”,但是如果是日文的,韩文的等等系统,可能就是人家语言中一个词,所以Python2.7(其他版本不清楚)中一般先用decode把自己的内码解码为unicode码,显示的时候可以再encode为本机的内码。这种encode好的字节在不支持unicode的程序中就可以显示中文(相当于用ASCII函数显示双字节中文)。
2011-10-20 20:39
0
游客
登录 | 注册 方可回帖
返回
//