我有一个十六进制字符串,我想将其转换为 utf8 以插入 mysql。(我的数据库是utf8)
hex_string = 'kitap ara\xfet\xfdrmas\xfd'
...
result = 'kitap araştırması'
我怎样才能做到这一点?
我有一个十六进制字符串,我想将其转换为 utf8 以插入 mysql。(我的数据库是utf8)
hex_string = 'kitap ara\xfet\xfdrmas\xfd'
...
result = 'kitap araştırması'
我怎样才能做到这一点?
尝试(Python 3.x):
import codecs
codecs.decode("707974686f6e2d666f72756d2e696f", "hex").decode('utf-8')
从这里。
假设 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'
尝试
hex_string.decode("cp1254").encode("utf-8")
(cp1254
或者iso-8859-9
是土耳其语代码页,前者是 Windows 平台上的常用名称,但在 Python 中,两者都同样有效)
首先,您需要从您拥有的编码字节中对其进行解码。这似乎是 ISO-8859-9 (latin-5),或者,如果您使用的是 Windows,可能是基于 latin-5 的代码页 1254 。
>>> '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
声明以指示 Python 对其进行解码。见PEP 263。
至于如何将数据库的 unicode 字符串编码为 UTF-8,好吧,如果你愿意,你可以手动完成:
>>> u'kitap ara\u015ft\u0131rmas\u0131'.encode('utf-8')
'kitap ara\xc5\x9ft\xc4\xb1rmas\xc4\xb1'
但是一个好的数据访问层很可能会自动为你做这件事,如果你有COLLATION
数据进入正确的表。
字符串文字解释了如何在 Python 源代码中使用 UTF8 字符串。