UNICODE字符串可以與任意字符編碼的字節(jié)進(jìn)行相互轉(zhuǎn)換,如圖:
那么大家很容易想到一個(gè)問題,就是不同的字符編碼的字節(jié)可以通過Unicode相互轉(zhuǎn)換嗎?答案是肯定的。
Python2中的字符串進(jìn)行字符編碼轉(zhuǎn)換過程是:
字節(jié)串-->decode('原來的字符編碼')-->Unicode字符串-->encode('新的字符編碼')-->字節(jié)串
#!/usr/bin/env python
# -*- coding:utf-8 -*-
utf_8_a = '我愛中國'
gbk_a = utf_8_a.decode('utf-8').encode('gbk')
print(gbk_a.decode('gbk'))
輸出結(jié)果:
我愛中國
Python3中定義的字符串默認(rèn)就是unicode,因此不需要先解碼,可以直接編碼成新的字符編碼:
字符串-->encode('新的字符編碼')-->字節(jié)串
#!/usr/bin/env python
# -*- coding:utf-8 -*-
utf_8_a = '我愛中國'
gbk_a = utf_8_a.encode('gbk')
print(gbk_a.decode('gbk'))
輸出結(jié)果:
我愛中國
最后需要說明的是,Unicode不是有道詞典,也不是google翻譯器,它并不能把一個(gè)中文翻譯成一個(gè)英文。正確的字符編碼的轉(zhuǎn)換過程只是把同一個(gè)字符的字節(jié)表現(xiàn)形式改變了,而字符本身的符號(hào)是不應(yīng)該發(fā)生變化的,因此并不是所有的字符編碼之間的轉(zhuǎn)換都是有意義的。怎么理解這句話呢?比如GBK編碼的“中國”轉(zhuǎn)成UTF-8字符編碼后,僅僅是由4個(gè)字節(jié)變成了6個(gè)字節(jié)來表示,但其字符表現(xiàn)形式還應(yīng)該是“中國”,而不應(yīng)該變成“你好”或者“China”。
-
編碼
+關(guān)注
關(guān)注
6文章
957瀏覽量
54951 -
字符
+關(guān)注
關(guān)注
0文章
234瀏覽量
25262 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
85038
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
C++字符編碼轉(zhuǎn)換的基本方法
從5個(gè)方面來解析計(jì)算機(jī)中的字符編碼概念

Python轉(zhuǎn)義字符使用總結(jié)資料免費(fèi)下載

Python字符的實(shí)例詳細(xì)說明

C++中字符編碼的轉(zhuǎn)換

Python字符數(shù)統(tǒng)計(jì)函數(shù)程序
2.2 python字符串類型
python字符串有哪些特定方法
Python字符與字節(jié)
Python編碼與解碼
Python中的默認(rèn)編碼

評(píng)論