编码为utf8时丢失数据

时间:2012-06-04 07:26:17

标签: python encoding twitter

我正在使用python并使用 Twitter api 接收有关用户的数据。我得到的是一个json编码的属性字典。例如

{

"id": 123456789,

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

"screen_name": "somescreenname",

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

}

注意:这不是我收到的确切字典,但总结了这个问题。

我的一些用户使用其他语言提供数据,假设日语。我想保存用户的“名称”。当我使用时:

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

我仍然最终失去了一些像这样的角色チㄸチツツハ￯ㅍツタタ。我不想丢失任何数据,我可以在这里应用的最佳机制是什么?

1 个答案:

答案 0 :(得分:3)

我想你会发现你并没有真正丢失任何数据。你应该能够做到:

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

并取回原始字符串。您可以将中间bytes对象写入磁盘,稍后再读取它并将其解码为相同的效果。

您似乎担心的是打印编码字符串时出现的正方形和其他废话 - 这几乎肯定是显示问题,而不是数据丢失。您的终端可能正在尝试使用不同的编码来解释字节,从而产生Mojibake。只要您小心地将您的编码保持在您的程序中,这不会导致您的问题 - 只需检查您是否可以进行上述往返。

相关问题