這裏是我的代碼爲 ' XE4' 的Unicode錯誤寫外來字符轉換成CSV
下工作,但寫了錯誤的字符串
import csv
import codecs
if __name__ == "__main__":
# This works for writing unico but writes wrong string
with codecs.open("./why_unicode.csv", "wb") as csv_file:
writer = csv.writer(csv_file)
unico = u'IP\u4e13\u7528\u8033\u673a.\u9ed1'.encode('utf-8')
writer.writerow(unico)
下面是結果
I,P,ä,¸,「,ç,」,¨,è,€,³,æ,œ,º,.,é,»,‘
這不是正確的字符串。正確的字符串是'IP專用耳機.黑'
這不起作用
import csv
import codecs
if __name__ == "__main__":
with codecs.open("./why_unicode.csv", "wb", 'utf-8') as csv_file:
writer = csv.writer(csv_file)
unico = u'IP\u4e13\u7528\u8033\u673a.\u9ed1'
writer.writerow(unico)
以下是錯誤
SyntaxError: Non-ASCII character '\xe4' in file
test_unicode.py on line 15, but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details
,這將無法運行在所有
import csv
import codecs
if __name__ == "__main__":
with codecs.open("./why_unicode.csv", "wb") as csv_file:
writer = csv.writer(csv_file)
unico = u'IP\u4e13\u7528\u8033\u673a.\u9ed1'.encode('utf-8')
#chn = u'IP專用耳機.黑' # even commenting out will return error
writer.writerow(unico)
的標準響應,在這種類型的問題在計算器是要麼使用codecs
或到encode('utf-8
),我都試過但都沒有工作,這有點令人困惑,有人可以幫我嗎?
編輯:
的腳本使用Python 2.7.3(蟒蛇-V)
起初很高興知道您使用的是哪個Python版本。處理unicode字符時,它們的行爲有着根本性的不同。我在python3中遇到了μ符號的類似問題。我剛纔在python3中試過,得到了b'IP \ xe4 \ xb8 \ x93 \ xe7 \ x94 \ xa8 \ xe8 \ x80 \ xb3 \ xe6 \ x9c \ xba。\ xe9 \ xbb \ x91'作爲輸出。 –
這個錯誤告訴你這個問題。 python在你的文件中使用ascii。您可以使用類似於「# - * - coding:utf-8 - * - 」的文件聲明您的文件編碼。也許這就是足夠的,只是偶然在此線程:http://stackoverflow.com/questions/6289474/working-with-utf-8-encoding-in-python-source –
你不能在Python 2 csv模塊使用unicode HTTP ://stackoverflow.com/questions/30551429/error-writing-data-to-csv-due-to-ascii-error-in-python/30551550#30551550,添加編碼聲明,你的代碼應該運行一旦你編碼 –