繁体   English   中英

在python 2.7中处理非英语文本

[英]processing non-english text in python 2.7

我正在尝试处理从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数据库的最佳方法是什么?

谢谢..

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

所以,你必须选择那些工作的编码,并使用它。 UTF-8是显而易见的选择。

创建MySQL数据库时,可以设置它的字符集。 您的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 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM