Python3的unicode編碼轉(zhuǎn)換成中文的問題及解決方案
這篇文章主要介紹了Python3的unicode編碼轉(zhuǎn)換成中文的問題及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
從別的地方搬過來的,擔心以后不容易搜索到,就收集過來。
我當時面臨的問題是要從C++發(fā)json代碼出來,用python寫了個server,然后返回給C++程序,結(jié)果收到的是:
httpSvrDataCbUser: {"tranNO": "0808ad498670dc996", "data": "\u65b0A1EY16", "ver": "1.0", "sendTime": "2019-12-10 00:23:51", "tranType": "2001"}
我發(fā)過去的是utf-8編碼,中間有中文,"新A1EY16",結(jié)果發(fā)回來的卻是:"\u65b0A1EY16"
9102年,大部分人已經(jīng)受盡了python2里面unicode的折磨,轉(zhuǎn)向了python3。
python3似乎對一切的unicode都那么的友好,當一個字符串里存在unicode的時候,只要字符串是硬編碼的,就可以轉(zhuǎn)換成中文打印在控制臺上,如:
s = ‘\u7b14\u8bb0' print(s)
你得到的就是中文漢字。
但是,假如你。。的這段含有‘\u'的unicode編碼不是硬編碼進腳本的,而是通過requests在網(wǎng)上爬的。。。那么你會發(fā)現(xiàn),你打印出來的,還是長這樣的unicode編碼,換句話說,解釋器這個時候根本就沒認出這東西原來是unicode編碼,當成普通的字符序列了。
百度找到了最好的解決方法:在這個unicode串后面加上:
s = s.decode().encode(‘unicode_escape') print(s)
它就打印出漢字了
python3中沒有這種問題,所以最簡單的方法是引入__future__模塊,把新版本的特性導入到當前版本
from __future__ import unicode_literals print json.dumps(m,ensure_ascii=False) =>{"a": "你好"}
在寫入文件的時候出現(xiàn)了Python2.7的UnicodeEncodeError: ‘a(chǎn)scii' codec can't encode異常錯誤
大神的解決方法:
不使用open打開文件,而使用codecs:
from __future__ import unicode_literals import codecs fp = codecs.open('output.txt', 'a+', 'utf-8') fp.write(json.dumps(m,ensure_ascii=False)) fp.close()
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- js字符串與Unicode編碼互相轉(zhuǎn)換
- python實現(xiàn)unicode轉(zhuǎn)中文及轉(zhuǎn)換默認編碼的方法
- PHP實現(xiàn)Unicode編碼相互轉(zhuǎn)換的方法示例
- JS實現(xiàn)的Unicode編碼轉(zhuǎn)換操作示例
- .Net(c#)漢字和Unicode編碼互相轉(zhuǎn)換實例
- C#將Unicode編碼轉(zhuǎn)換為漢字字符串的簡單方法
- JavaScript中字符串與Unicode編碼互相轉(zhuǎn)換的實現(xiàn)方法
- PHP如何實現(xiàn)Unicode和Utf-8編碼相互轉(zhuǎn)換
- js unicode 編碼解析關于數(shù)據(jù)轉(zhuǎn)換為中文的兩種方法
- C++11 Unicode編碼轉(zhuǎn)換
相關文章
python 利用 PIL 將數(shù)組值轉(zhuǎn)成圖片的實現(xiàn)
這篇文章主要介紹了python 利用 PIL 將數(shù)組值轉(zhuǎn)成圖片的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04利用django model save方法對未更改的字段依然進行了保存
這篇文章主要介紹了利用django model save方法對未更改的字段依然進行了保存,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03