python 2.7 unicode显示本地和服务器之间的不同结果

时间:2016-03-18 09:13:39

标签: python unicode

我在本地计算机和服务器中输入了"久保充明"

1)第一个问题
本地 - python2.7.10 - 韩文电脑

>>> a = "久保充明"
>>> a
'\xce\xf9\xdc\xc1\xf5\xf6\xd9\xa5'

server - python2.7.6 - (日文服务器?)

>>> a = "久保充明"
>>> a
'\xe4\xb9\x85\xe4\xbf\x9d\xe5\x85\x85\xe6\x98\x8e'

两者都显示出不同的结果......

有没有人告诉为什么结果不同? 也许OS语言不同??

2)第二个问题 为什么Python显示这个?

'\xce\xf9\xdc\xc1\xf5\xf6\xd9\xa5' (<- what is this??)

而不是这个?

"久保充明"

2 个答案:

答案 0 :(得分:1)

您正在使用Python 2并且您在本地计算机上以本地编码书写字符;它是,我不知道;它不是UTF-8,也不是GB2312,18030,Big5或Shift-JIS:

>>> print('\xce\xf9\xdc\xc1\xf5\xf6\xd9\xa5'.decode('GB2312'))
矽芰貊佶
>>> print('\xce\xf9\xdc\xc1\xf5\xf6\xd9\xa5'.decode('GB18030'))
矽芰貊佶
>>> print('\xce\xf9\xdc\xc1\xf5\xf6\xd9\xa5'.decode('Big5'))
朏僋蘜晱
>>> print('\xce\xf9\xdc\xc1\xf5\xf6\xd9\xa5'.decode('Shift-jis'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 1-2: illegal multibyte sequence

在服务器上,您使用的是UTF-8。

您应该始终使用UTF-8 / Unicode;实际上Python 3指定默认情况下UTF-8是源代码编码。此外用

启动源文件
# -*- coding: utf-8 -*-

并使用u''个unicode字符串。如果可能,请考虑切换到Python 3;它也可能解决了问题2的问题。

答案 1 :(得分:0)

  1. 两个操作系统的字符集设置不相同,因此它们的输出不同。
  2. 结果是中文字符的编码,如果你在打印之前设置编码,你就会得到你想要的。
  3. 写入文件test.py

    # -*- coding: utf-8 -*-
    
    a = "久保充明"
    print(a)