我有一个十六进制字符串,我想将其转换为utf8以插入mysql。 (我的数据库是utf8)
hex_string = 'kitap ara\xfet\xfdrmas\xfd'
...
result = 'kitap araştırması'
我该怎么做?
答案 0 :(得分:4)
假设Python 2.6,
>>> print('kitap ara\xfet\xfdrmas\xfd'.decode('iso-8859-9'))
kitap araştırması
>>> 'kitap ara\xfet\xfdrmas\xfd'.decode('iso-8859-9').encode('utf-8')
'kitap ara\xc5\x9ft\xc4\xb1rmas\xc4\xb1'
答案 1 :(得分:3)
尝试(Python 3.x):
import codecs
codecs.decode("707974686f6e2d666f72756d2e696f", "hex").decode('utf-8')
来自here。
答案 2 :(得分:1)
尝试
hex_string.decode("cp1254").encode("utf-8")
(cp1254
或iso-8859-9
是土耳其语代码页,前者是Windows平台上的常用名称,但在Python中,两者都同样有效)
答案 3 :(得分:1)
首先,您需要从您拥有的编码字节中解码它。这似乎是ISO-8859-9(拉丁语-5),或者,如果您使用的是Windows,可能是code page 1254,它基于拉丁语-5。
>>> 'kitap ara\xfet\xfdrmas\xfd'.decode('cp1254')
u'kitap ara\u015ft\u0131rmas\u0131' # u'kitap araştırması'
如果 使用Windows,那么根据您获取这些字节的位置,可能更适合将其解码为mbcs
,这会转换为.py
到'本地系统使用的任何代码页'。如果字符串只是放在u'kitap araştırması'
文件中,那么最好只在源代码中编写-*- coding
并设置>>> u'kitap ara\u015ft\u0131rmas\u0131'.encode('utf-8')
'kitap ara\xc5\x9ft\xc4\xb1rmas\xc4\xb1'
声明以指示Python对其进行解码。请参阅PEP 263。
关于如何将unicode字符串编码为数据库的UTF-8,如果你愿意,可以手动完成:
COLLATION
但是如果你有数据进入的{{1}}表,那么一个好的数据访问层很可能会自动为你做这件事。
答案 4 :(得分:0)
String literals解释了如何在Python源代码中使用UTF8字符串。