在python 2.7中处理非英语文本

时间:2013-11-12 22:06:16

标签: python twitter unicode encoding

我正在尝试处理我从Twitter流API获得的文本,我正在获取外国文本,当我尝试将其保存到mysql数据库时,我不断收到错误:

UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-1: character maps to <undefined>
我的文字是这样的:

\u0421\u043c\u043e\u0440\u0438\u0442\u0435

我系统的编码设置是

>>> print sys.stdout.encoding
cp437

我现在想要处理文本并将其保存到mysql数据库的最佳方法是什么?

谢谢..

1 个答案:

答案 0 :(得分:1)

你显然无法将该文本保存为cp437,因为cp437没有任何与U + 0421匹配的字符等。

因此,您必须选择的编码,并使用它。 UTF-8是显而易见的选择。

您可以在创建MySQL数据库时设置它的charset。您的Python脚本在连接时必须设置相同的字符集。例如,如果您正在使用pyMySQL:

conn = pymysql.connect(usual=parameters, blah=blah, charset='utf8')

然后你可以按原样给它unicode个对象。

如果您有一个使用不同字符集的预先存在的数据库,则必须进行转换。并更改与数据库通信的任何其他脚本也使用UTF-8。

请注意,某些MySQL绑定(特别是对于其他语言,如PHP或perl)可能根本不理解字符集。在将每个字符串参数显式编码为UTF-8之前,您必须将它们包装起来,然后将其传递给SQL语句,并将每个字符串解码为从行集接收的UTF-8。 (它可能还需要在第一次连接时显式执行SET NAMES UTF-8,我不确定。)

相关问题