2012-06-04 230 views
1

我使用Python和通過使用Twitter的API接收關於用戶數據丟失數據。我得到的是一個json編碼的屬性字典。例如編碼時爲UTF8

{ 

"id": 123456789, 

"name": "ととり~む", 

"screen_name": "somescreenname", 

"description": "こんにちは♪ キャラ的にはこなたですが好きな子はつかさな私です。 ゲーム・漫畫・アニメならなんでも好きです。 気が合う方はよろしくお願いします。 ", 

} 

注:這不是我收到確切的字典,而是總結了這個問題。

我的一些用戶有其他語言的數據,假設是日語。我想保存「名稱」我的用戶的。當我使用:

data["name"].encode('utf8') 

我還是最終失去了一些類似這樣的¯チㄸ¯チㄸ¯ツハ￯ㅍ゙¯ツタ字符。我不想丟失任何數據,我可以在這裏應用的最佳機制是什麼?

+0

一些真實數據,在字節級。 –

+0

使用'utf16' .... –

+0

@PriyankPatel:[UTF-8](https://en.wikipedia.org/wiki/Utf8)覆蓋相同範圍的unicode碼點爲[UTF-16](HTTPS:/ /en.wikipedia.org/wiki/UTF-16);從'U + 0000'到'U + 10FFFF'。如果你不能在一箇中編碼,使用另一個是毫無意義的。 –

回答

3

我想你會發現你沒有真正丟失任何數據。你應該可以這樣做:

data['name'].encode('utf8').decode('utf8') 

並取回原始字符串。您可以將中間對象bytes寫入磁盤,並在稍後將其讀回,並將其解碼爲相同的效果。

你似乎是擔心那是什麼拿出當您打印編碼字符串的廣場等廢話 - 這是幾乎可以肯定的顯示問題,而不是數據丟失。可能你的終端試圖以不同的編碼解釋字節,導致Mojibake。只要你小心地保持你的編碼直接在你的程序中,這不會導致你的問題 - 只是檢查你可以做上面的往返。

+1

+1教我新詞彙! –