Python utf-8转换为utf-16
我想将汉字转换为unicode格式,如“\uxxx” 但是当我使用str.encode('utf-16be')时,它会显示:Python utf-8转换为utf-16,python,python-3.x,unicode,utf-16,Python,Python 3.x,Unicode,Utf 16,我想将汉字转换为unicode格式,如“\uxxx” 但是当我使用str.encode('utf-16be')时,它会显示: b'\xOO\xOO' 因此,我编写了一些代码来执行我的请求,如下所示: data="index=索引?" print(data.encode('UTF-16LE')) def convert(s): returnCode=[] temp='' for n in s.encode('utf-16be'): if temp==''
b'\xOO\xOO'
因此,我编写了一些代码来执行我的请求,如下所示:
data="index=索引?"
print(data.encode('UTF-16LE'))
def convert(s):
returnCode=[]
temp=''
for n in s.encode('utf-16be'):
if temp=='':
if str.replace(hex(n),'0x','')=='0':
temp='00'
continue
temp+=str.replace(hex(n),'0x','')
else:
returnCode.append(temp+str.replace(hex(n),'0x',''))
temp=''
return returnCode
print(convert(data))
有人能给我一些建议,在Python3.x中进行这种转换吗 试着先解码,比如:
s.decode('utf-8')。encode('utf-16be')
?试着先解码,比如:s.decode('utf-8')。encode('utf-16be')
?我不确定我是否理解你的意思
Unicode就像一种类型。在Python3中,所有字符串都是unicode,因此在编写data=“index”时=索引?"代码>则数据已经是unicode。如果您想获得仅用于显示的替代表示形式,可以使用:
def display_unicode(data):
return "".join(["\\u%s" % hex(ord(l))[2:].zfill(4) for l in data])
>>> data = "index=索引?"
>>> print(display_unicode(data))
\u0069\u006e\u0064\u0065\u0078\u003d\u7d22\u5f15\u003f
请注意,字符串现在有实际的反斜杠和数字表示,而不是unicode字符
但可能还有其他选择
>>> data.encode('ascii', 'backslashreplace')
b'index=\\u7d22\\u5f15?'
>>> data.encode('unicode_escape')
b'index=\\u7d22\\u5f15?'
我不确定我是否了解你
Unicode就像一种类型。在Python3中,所有字符串都是Unicode,所以当您编写data=“index=索引?“
那么数据已经是unicode。如果您想获得一种仅用于显示的替代表示法,可以使用:
def display_unicode(data):
return "".join(["\\u%s" % hex(ord(l))[2:].zfill(4) for l in data])
>>> data = "index=索引?"
>>> print(display_unicode(data))
\u0069\u006e\u0064\u0065\u0078\u003d\u7d22\u5f15\u003f
请注意,字符串现在有实际的反斜杠和数字表示,而不是unicode字符
但可能还有其他选择
>>> data.encode('ascii', 'backslashreplace')
b'index=\\u7d22\\u5f15?'
>>> data.encode('unicode_escape')
b'index=\\u7d22\\u5f15?'
您在其中定义字符串的文件的编码是什么?不确定问题出在哪里。UTF-16LE不是Unicode,但它是Microsoft所称的“Unicode”。请描述您的目标,而不是您的过程。“索引=索引?“.encode('utf-16be')
给出b'\x00i\x00n\x00d\x00e\x00x\x00=}”\ux15\x00?
。您想要什么输出?我想将字符转换为“\uxxx”格式。如下所示:index=\u0069\u006e\u0064\u0065\u0078\u003d\u7d22\u5f15\u003f
定义字符串的文件的编码是什么?不确定问题出在哪里。UTF-16LE不是Unicode,但它是微软所谓的“Unicode”。描述你的目标,而不是过程。“索引=索引?".encode('utf-16be')
给出b'\x00i\x00n\x00d\x00e\x00x\x00=}“\ux15\x00?”
。您想要什么输出?我想将字符转换为“\uxxx”格式。像这样:index=\u0069\u006e\u0064\u0065\u0078\u003d\u7d22\u5f15\u003f
print
implicate Python 3.x上的参数几乎肯定是使用Python 3-see print作为函数,ab'
literal。此外,文本文件的编码不一定遵循$LANG
-IDE和文本编辑器通常允许您在其配置中进行设置,并有自己的默认值。我使用python3.3,默认编码为UTF-8抱歉,我没有正确阅读问题。不data.encode('ascii','backslashreplace')
做这个把戏吗?OP几乎肯定是使用Python3的-请参阅print被用作函数和ab'
literal。此外,文本文件的编码不一定遵循$LANG
-IDE和文本编辑器通常允许您在其配置中进行设置,并有自己的默认值。我使用python3.3,默认编码为UTF-8抱歉,我没有正确阅读问题。数据编码('ascii','backslashreplace')不起作用吗?