我有一些字符串作爲測試數據粘貼到我的腳本中。這些字符串來自包含編碼字符的電子郵件,它會拋出一個SyntaxError
。到目前爲止,我一直無法找到解決這個問題的辦法。當我print repr(string)
,我得到這些字符串:解碼包含編碼字符的字符串
'Total Value for 1st Load \xe2\x80\x93 approx. $75,200\n'
'Total Value for 2nd Load \xe2\x80\x93 approx. $74,300\n'
而這個錯誤彈出,當我運行我的腳本:
SyntaxError: Non-ASCII character '\xe2' in file <filename> on line <line number>, but no
encoding declared; see http://www.python.org/peps/pep-2063.html
當我剛打印出含有編碼字符的行我得到這個:
'Total Value for 2nd Load â€「 approx. $74,300'
的數據是這樣的,當我從電子郵件複製:
'Total Value for 1st Load – approx. $75,200'
'Total Value for 2nd Load – approx. $74,300'
從我的搜索中,我相信它是用utf-8編碼的,但是我不知道如何基於某些字符被編碼的事實來處理這些數據,但其中大多數不是(也許?)。我嘗試了迄今爲止發現的各種「解決方案」。包括增加# -*- coding: utf-8 -*-
給我的腳本的頂部和腳本只是掛起...它沒有做任何事情:(
如果有人能提供關於如何處理這種情況的一些信息,這將是驚人的。
我一直在使用string.encode()
和string.decode()
試圖解碼和編碼,使用基於什麼我能找到谷歌不同的編碼,但是這並沒有解決問題。
我真的喜歡一個Python的解決方案,因爲這個項目我m的工作需要人們將數據粘貼到GUI中的文本框中,然後處理該數據。其他解決方案建議粘貼t他將數據轉換成單詞或記事本,將其保存爲純文本,然後再從該文件複製/粘貼。這有點多。有人知道處理這個問題的pythonic方式嗎?
*所有*您的字符編碼。恰巧,UTF-8編碼的前128個字符是由ASCII編碼的完全相同的字符。所以'T'在ASCII和UTF-8中都是'\ x84',Python總是顯示ASCII字符而不是字節值。 – 2014-10-08 21:22:20
打印時看到的內容稱爲[Mojibake](http://en.wikipedia.org/wiki/Mojibake); UTF-8字節解釋錯誤,因爲您的控制檯可能設置爲Windows代碼頁1252. – 2014-10-08 21:34:00
添加'# - * - coding:utf-8 - * - '作爲源的第一行或第二行應該已經工作,沒有做任何事情。有些東西你沒有告訴我們。 – 2014-10-08 21:45:50