很抱歉像个傻瓜一样问这个问题,但也许有人能帮我走出Python2.7的解码/编码地狱
我有一个字符串如下,我不确定,但我认为它被编码为UTF-8,因为我在py文件的头写了# -*- coding: utf-8 -*-
s = "今日もしないとね"
我的观点是,如果它是一个字符串,它的一部分可以用[]这样打印出来:
print s[1]
然后我的崇高中出现了一个错误:
[Decode error - output not utf-8]
我在候机楼试过了我得到了一个
?
好吧,也许utf-8字符串的一部分会变成不是utf-8字符串,所以我试着:
print s[1].encode("utf-8")
然后我得到了这个:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbb in position 0: ordinal not in range(128)
我完全糊涂了。这是否意味着字符串的一部分是类似于\xbb
的ascii码?你知道吗
有人能告诉我下面这些东西的编码是什么吗?你知道吗
a = "今日もしないとね"
b = u"今日もしないとね"
c = "python2.7 fxxked me"
d = u"python2.7 fxxked me"
e = "今"
f = "z"
aa = a[0]
bb = b[0]
cc = c[0]
dd = d[0]
如何从"今日,もしないとね"
得到"今日"
?你知道吗
谢谢你!你知道吗
您的文件是用UTF-8正确编码的,但是您的操作系统(直接)不支持Unicode输出。你知道吗
在python2中指定Unicode字符串文字的正确方法是使用“u”前缀。只有在这种情况下,Unicode字符串才实际存储在那里。你知道吗
顺便说一下,您可以看到Python使用
repr
函数对变量内容的实际想法:正如评论所指出的,unicode不像Python的许多其他部分那么容易发现和学习
下面的代码示例将打印“今”
但是-编码行只告诉Python如何解释文件中的那些字节。许多编辑器不会寻找编码行,您需要确保它们实际上也在使用utf-8,以确定如何向您显示这些字节。你知道吗
当Python到达print语句时,它将接受unicode对象
b
,并使用sys.stdout.encoding
对其进行编码。现在,这也更好地匹配您的终端/控制台设置,否则您将得到一些垃圾打印代替。你知道吗相关问题 更多 >
编程相关推荐