Pythons 2.7.x关于Unicode的文档以及为什么它仍然有效?

Pythons 2.7.x关于Unicode的文档以及为什么它仍然有效?,python,string,unicode,8-bit,Python,String,Unicode,8 Bit,根据Python 2.7.x文档: unicode()构造函数具有签名unicode(字符串[,编码,错误])。它的所有参数都应该是8位字符串。第一个参数使用指定的编码转换为Unicode;如果不使用encoding参数,转换将使用ASCII编码,因此大于127的字符将被视为错误: >>> unicode('abcdef' + chr(255)) Traceback (most recent call last): ... UnicodeDeco

根据Python 2.7.x文档:

unicode()
构造函数具有签名
unicode(字符串[,编码,错误])
。它的所有参数都应该是8位字符串。第一个参数使用指定的编码转换为Unicode;如果不使用encoding参数,转换将使用ASCII编码,因此大于127的字符将被视为错误:

   >>> unicode('abcdef' + chr(255))    
   Traceback (most recent call last):
   ...
   UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 6:
   ordinal not in range(128)
那么,为什么这里面有日语字符呢

TestStr = "サーバ移設"
print TestStr
サーバ移設
为什么这也起作用

TestStr = unicode("サーバ移設")
print TestStr
サーバ移設

我本以为会出现unicode解码错误,因为日语字符不在8位字符串范围内。

文本文件的编码很重要。您是否在文件顶部指定了编解码器?顺便说一句,您的第二个示例为我抛出了unicode错误。您是否在某个地方设置了
sys.defaultencoding
,我在site.py文件中将编码设置为UTF-8。我还在Python代码中使用了UTF-8编码。但是,后者没有什么区别,因为我相信它能够显示Python代码,其中的字符串包含128(ASCII值)以上的字符。@delnan是的,我在Python脚本中启用了#--coding:utf-8。