python 中文編碼終極方案

[TOC]


關鍵詞列表

python 亂碼
python utf8
python utf-8
python unicode
python 中文
python 轉碼
python dict 編碼

str 和 unicode

python 里字符串類型有兩種:

  • str : 以utf8形式存儲的字符串
  • unicode : 直接以unicode 形式存儲的字符串
    這兩種相當于是對應兩個不同的類, 只是有一些方法可以實現相互轉換

str 類型

a='中'
len(a) = 3  , 表示 '中' 的 utf-8表示形式在內存里需要3字節(jié)

unicode 類型

a=u'中'
len(a) = 1 , 表示 一共有 1 個符號

str-->unicode

a='中'
a.decode('utf-8')
,
str 類型只能調用 decode, 不能調用 encode

unicode --> str

a=u'中'
a.encode('utf-8')
,
unicode 類型只能調用 encode, 不能調用 decode

dict 打印中文

怎樣才能讓 dict 類型序列化后的結果顯示中文字符, 而不是顯示 '\u4e2d' 或者 '\xae28\xa3b2'

>>> a={}
>>> a[1] = u'中'
>>> a
{1: u'\u4e2d'}
>>> print a
{1: u'\u4e2d'}

方法一:

import json
a={}
a[1] = u'中'

#b=json.dumps(a,  ensure_ascii=False)
b=json.dumps(a,  ensure_ascii=False)

print b

結果 ===> {"1": "中"}

<br />
方法二:

a={}
a[1] = u'中'
b=str(a)  或者  b = `a`

################
b=b.replace('u\'', '\'')
print b.decode('unicode-escape')
## 不能使用 print b.decode('utf-8')


結果 ==> {1: '中'}


list 打印中文

a=[]
a.append('中國')
b=str(a)
print b
####
結果 ==> ['\xe4\xb8\xad\xe5\x9b\xbd']

b=b.decode('string_escape')
print b
結果 ==> ['中國']

unicode --> unicode-escape


## unicode --> unicode-escape
>>> u'中文測試'.encode('unicode-escape')
'\\u4e2d\\u6587\\u6d4b\\u8bd5'

## unicode-escape --> unicode
>>> '\\u4e2d\\u6587\\u6d4b\\u8bd5'.decode('unicode-escape')
u'\u4e2d\u6587\u6d4b\u8bd5'

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容