Python utf-8转换为utf-16

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==''

我想将汉字转换为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=='':
            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作为函数,a
b'
literal。此外,文本文件的编码不一定遵循
$LANG
-IDE和文本编辑器通常允许您在其配置中进行设置,并有自己的默认值。我使用python3.3,默认编码为UTF-8抱歉,我没有正确阅读问题。不
data.encode('ascii','backslashreplace')
做这个把戏吗?OP几乎肯定是使用Python3的-请参阅print被用作函数和a
b'
literal。此外,文本文件的编码不一定遵循
$LANG
-IDE和文本编辑器通常允许您在其配置中进行设置,并有自己的默认值。我使用python3.3,默认编码为UTF-8抱歉,我没有正确阅读问题。数据编码('ascii','backslashreplace')不起作用吗?