我在谷歌應用程序引擎與Python 2.5。我的應用程序必須處理多語言,所以我必須處理utf-8。Python和UTF-8:有點困惑
我已經做了很多谷歌,但沒有得到我想要的。
1.使用# -*- coding: utf-8 -*-
的用法是什麼?
2.什麼是
s=u'Witaj świecie'
s='Witaj świecie'
'WitajŚwiecie的' 之間的差爲UTF-8字符串。
3.當我將.py文件保存爲'utf-8'時,在每個字符串之前是否仍需要u
?
我在谷歌應用程序引擎與Python 2.5。我的應用程序必須處理多語言,所以我必須處理utf-8。Python和UTF-8:有點困惑
我已經做了很多谷歌,但沒有得到我想要的。
1.使用# -*- coding: utf-8 -*-
的用法是什麼?
2.什麼是
s=u'Witaj świecie'
s='Witaj świecie'
'WitajŚwiecie的' 之間的差爲UTF-8字符串。
3.當我將.py文件保存爲'utf-8'時,在每個字符串之前是否仍需要u
?
u'blah'
它變成串的不同種類(類型unicode
而非str
類型) - 它使Unicode代碼點的序列。沒有它,它是字節的序列。只有字節可寫入磁盤或網絡流,但您通常希望使用Unicode(儘管Python和一些庫會爲您執行一些轉換) - 編碼(utf-8)是這些。所以,是的,你應該在所有文字前使用u
,這會讓你的生活變得更容易。有關更好的解釋,請參見Programatic Unicode。
編碼行告訴Python您的文件是什麼編碼,以便Python可以理解它。再次,從磁盤讀取字節 - 但Python希望看到字符。在Py2中,代碼的默認編碼是ASCII,因此編碼行可以讓您直接將諸如ś
之類的東西放在.py文件中 - 除此之外,它不會改變代碼的工作方式。
嗨,謝謝。 u'Witajświecie'和unicode(u'Witajświecie','utf-8')和unicode('Witajświecie','utf-8')有什麼區別? –
@SusanMayer第一個和最後一個會得到相同的結果(在utf8編碼的.py中),但以不同的方式進行:第一個從解析器得到unicode字符串,最後一個生成一個字節字符串,然後要求Python使用utf-8從它構建一個unicode字符串。這與'[1,2]'和'list((1,2))'之間的區別大致相同。中間一個是錯誤的:第一個參數已經是一個unicode字符串,並且您告訴Python將其視爲utf8編碼的字節字符串 - 這是沒有意義的。 – lvc
'unicode('Witajświecie','utf-8')'和unicode('Witajświecie')'有什麼區別?如果它是一個'utf-8' .py文件,沒有區別嗎?如果它不是'utf-8'文件,有什麼區別嗎?謝謝! –
1.重複的:http://stackoverflow.com/questions/4872007/where-does-this-come-from-coding-utf-8 2.重複的:http://stackoverflow.com/questions/ 4172652/python-what-does-u-represent 3.您將在Python的優秀文檔中找到完整的答案:http://docs.python.org/howto/unicode.html#unicode-literals-in-python-source-代碼 – bernie
解釋如何處理python代碼中的unicode字符串http://stackoverflow.com/a/10650469/624829 – Boud