簡體   English   中英

utf-8轉換為utf-16

[英]utf-8 convert to utf-16

我想將中文字符轉換為unicode格式,比如'\\ uXXXX'但是當我使用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))

有人可以給我建議在python 3.x中進行這種轉換嗎?

我不確定我是否理解你。

Unicode就像一種類型。 在python 3中,所有字符串都是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?'

首先嘗試解碼,例如: s.decode('utf-8').encode('utf-16be')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM