0
我作爲波紋管字典()的Python外語
mapper = {'А': 1, 'Б': 1}
mapper
或
mapper = {u'А': 1, u'Б': 1}
mapper
А,Б - 俄羅斯字母。 這兩個我們已經
{u'\u0410': 1, u'\u0411': 1}
的Python 2.7
什麼是正確的方法是什麼?謝謝
我作爲波紋管字典()的Python外語
mapper = {'А': 1, 'Б': 1}
mapper
或
mapper = {u'А': 1, u'Б': 1}
mapper
А,Б - 俄羅斯字母。 這兩個我們已經
{u'\u0410': 1, u'\u0411': 1}
的Python 2.7
什麼是正確的方法是什麼?謝謝
如果你使用的是Python 3,這三種方法都是一樣的。
隨着Python 2,事情變得棘手。如果您使用第一種或第二種方法,則必須在文件頂部包含一個編碼(如果有的話)(如果有的話),否則Python會抱怨您在代碼中包含非ASCII字符:
#!/usr/local/bin/python
# coding: utf-8
如果使用第一種方法,你的Unicode文本會編碼使用UTF-8:
>>> mapper == {'\xd0\x90': 1, '\xd0\x91': 1}
True
如果使用第二種方法,您的Unicode文本將被解釋爲Unicode文本:
>>> mapper == {u'\u0411': 1, u'\u0410': 1}
True
請注意,兩者是非常不同的。一個是字節串,而另一個表示文本:
>>> {'\xd0\x90': 1, '\xd0\x91': 1} == {u'\u0411': 1, u'\u0410': 1}
False
在任一情況下,使用字符轉義序列或Unicode文字不會使一個區別,因爲它們代表相同的Unicode字符:
>>> u'\u0411' == u'Б'
True
#!/usr/local/bin/python
# coding: utf-8
from __future__ import unicode_literals
:
您可以通過在文件的頂部聲明字符編碼,並從__future__
包導入unicode_literals
使Python 2的行爲像Python
這將會使你的代碼工作同樣在這兩個的Python 2和Python 3
使用Python 3沒有區別 –
對不起我fogotten告訴我用2.7 – Edward
那麼你不能在相同的輸出兩種情況 –