无论如何都要提取下划线"原始数据"从python unicode字符串?

时间:2013-04-22 07:05:54

标签: python unicode

我用pymssql来解决这个问题。我有一个mssql db,其编码是gbk,但似乎pymssql不支持这个。当我使用'gbk'作为字符集时,它会抛出OperationalError 20017一些无用的消息,而当我尝试'cp936'时它就会崩溃......

我可以与'UTF-8'成功连接并可以用sqlstr.encode('utf-8')执行查询,问题是它返回包含非unicode内容的unicode sting。

例如,一个查询返回一个unicode字符串u'Port 26 \xb5\xe7',但这是错误的,它不是一个unicode字符串,它根本不能解码/编码,它应该是'Port 26 \xb5\xe7'(对于python 2.x),因此它可以用gbk解码并获得正确的结果

所以我的任务是从unicode字符串中提取原始内容。好吧,我想我可以用repr做一些字符串截断,然后调用eval,但我只是想知道是否有更多的pythonic方式?

1 个答案:

答案 0 :(得分:2)

这样做你想要的吗?

>>> myString = u'Port 26 \xb5\xe7'
>>> print myString.encode('latin1').decode('gbk')
Port 26 电

事实上,您可以使用其中任何一种作为编码编解码器:

cp1250
cp1252
cp1254
cp1256
cp1258
latin_1
iso8859_3
iso8859_9
iso8859_15

拉丁1是你最好的选择(最具包容性)。列出的cp编解码器都是基于Windows的。