免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: Levin_1221
打印 上一主题 下一主题

source code encoding问题,我找了半天都没找到原因:( [复制链接]

论坛徽章:
0
21 [报告]
发表于 2009-03-06 17:38 |只看该作者

回复 #19 Levin_1221 的帖子

不过,如果是#coding:utf8这个的话,只要把文件另存为utf8格式
然后中文前加上u就ok了,不加中文就不对了,乱码了。

比如s = u'中文',现在是正宗utf8字符串了

论坛徽章:
0
22 [报告]
发表于 2009-03-06 17:51 |只看该作者
原帖由 xiaoyu9805119 于 2009-3-6 17:36 发表
用#coding:utf8
SyntaxError: 'utf8' codec can't decode bytes in position 5-6: invalid data

那就用utf-8,太神奇+诡异了,还没这么试过,一直习惯utf-8或者gbk,其他都没试过


是啊,我也觉得很奇怪,关键是不知道怎么解释,按照之前理解的分析方式的话就说不通。

论坛徽章:
0
23 [报告]
发表于 2009-03-06 18:10 |只看该作者
原帖由 xiaoyu9805119 于 2009-3-6 17:38 发表
不过,如果是#coding:utf8这个的话,只要把文件另存为utf8格式
然后中文前加上u就ok了,不加中文就不对了,乱码了。

比如s = u'中文',现在是正宗utf8字符串了


我用utf8还是一样的结果,用utf-8就对了。搞不明白。
你说的这个加u和不加u的我知道是怎么回事,print的时候 只是把code byte串传给了系统,如果是string类型的则控制台用系统默认的编码方式GBK解析输出,如果是unicode类型的就用GBK encode成str,然后输出。
所以,如果 s = '中文',那么print s.decode('utf-8')看到就是'中文'了。

论坛徽章:
0
24 [报告]
发表于 2009-03-06 19:06 |只看该作者
这里有 关于 ASCII,Unicode和UTF-8的 区别与联系  写的很简洁
http://www.ruanyifeng.com/blog/2 ... code_and_utf-8.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP