[英]Confusion about python unicode
我已經在Windows7中通過崇高的文字編寫了一個python文件,文件中包含一些中文字符,因此當我運行它時,這些字符變得無法識別(在cmd和git bash中也是如此):
# -*- coding: utf-8 -*-
str = "測試"
print str
arr = []
arr.append(str)
print arr
結果是:
嫻嬭瘯
['\xe6\xb5\x8b\xe8\xaf\x95']
我怎么解決這個問題? 這個問題的原因是什么? 並且
arr
打印結果不應是\\uXXX\u003c/code>這樣的unicode?
順便說一下,如果沒有
# -*- coding: utf-8 -*-
我什# -*- coding: utf-8 -*-
無法運行它:
$ python test.py
File "test.py", line 2
SyntaxError: Non-ASCII character '\xe6' in file test.py on line 2, but no encodi
ng declared; see http://www.python.org/peps/pep-0263.html for details
我只是用谷歌搜索語句,為什么沒有它就無法運行代碼?
您會看到字符串的UTF-8編碼版本(順便說一句,您不應將其命名為str
)。 通過在腳本的開頭添加# -*- coding: utf-8 -*-
行,您將告訴Python這是腳本正在使用的編碼。 您確定它實際上正在使用該編碼嗎?
如果不是這種情況(請檢查您的編輯器!),或者您的終端窗口(在其中print
字符串的窗口)正使用不同的編碼,則會出現亂碼(如果編碼的字符串不能以該編碼進行解釋)。
僅當解碼 (字節)字符串時,您才會獲得Unicode對象。
因此,首先您需要了解終端的字符編碼。 然后,您應該將所有字符串盡快轉換為Unicode,並僅在程序中處理Unicode對象,直到需要輸出它們為止;此時,您需要將它們編碼為正確的編碼。
例如
# -*- coding: utf-8 -*-
s = u"測試"
s = s + u"嫻嬭瘯"
print s.encode("somecodepage")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.