導航:首頁 > 編程語言 > unicode碼在python里怎麼用

unicode碼在python里怎麼用

發布時間:2022-07-19 05:05:45

A. 文件里寫的是unicode,用python怎麼讀取成文本

先讀到內存,然後根據腳本當前編碼decode,然後再encode成你想要的編碼
eg:
#假設readString是你讀出來的字元串,你想轉成gb2312

# -*- coding: utf-8 -*-

readString.decode('utf-8').encode('gb2312') #當前腳本編碼為utf-8

B. python怎麼轉換unicode編碼

用decode()就行。decode()方法必須傳入一個參數,這個參數就是當前待轉碼的編碼,此函數方法的用意就是將當前編碼為Unicode編碼。

比如就你這提問的此頁面:

#使用版本是python2.
importurllib
url='https://..com/question/1499967322379602619.html?entry=qb_ihome_tag&hideOtherAnswer=true&newAnswer=1'
html=urllib.urlopen(url).read()
result=html.decode('gbk')
printresult

方法是絕對可行的

此法對字元串和文檔內容的解碼一樣有效。

C. 在python中unicode是什麼用法

可以列印出中文的
ss=u'網路'
print ss
就可以列印出中文

D. python怎麼把unicode碼轉漢字

普通字元串可以用多種方式編碼成Unicode字元串,具體要看你究竟選擇了哪種編碼: unicodestring = u"Hello world" # 將Unicode轉化為普通Python字元串:"encode" utf8string = unicodestring.encode("utf-8")

E. 如何理解python3的unicode,以及全形半形轉換

1. unicode是一個編碼的standard,表明了字元與數字之間的映射,是可變長的。

2. 映射後的數據如何編碼為位元組?這個就是具體的編碼規則:目前最主流的是UTF-8,同樣,它也是變字長的。

python3中的str都是unicode的:「The default encoding for Python source code is UTF-8」

python3中的encode:按照encode()括弧中的參數對字元串進行編碼,就是生成bytes。

所以:

In:'中文'.encode('utf-8')
Out:b'\xe4\xb8\xad\xe6\x96\x87'

這里的b就是Byte,\x表示這個x是被轉義的,意思就是0x。又如:

In: 'abc'.encode('utf-8')

Out: b'abc'

上面的b'a'其實表示的是數字97,b'a'的意思就是字元串'a'的binary數字:

[In]:'abc'.encode('utf-8')[0]

[Out]: 97

同時可以把b'\x'進行解碼,即:
In:b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
Out:'中文'
除了encode('utf-8')外,用ord可以獲得單個utf-8字元對應的數字:

In [60]: ord('a')
Out[60]: 97
In [61]: ord('a')#這個是全形的a
Out[61]: 65345

除了decode('utf-8')外,用chr可以獲得數字對應的utf-8字元:

In [62]: chr(97)
Out[62]: 'a'

除了unicode還有別的編碼標准嗎?有啊,比如我國的GBK,別名也叫cp936。

全形和半形之分,是指同樣一個意義的字元,顯示的大小不同.具體來說,全形和半形的編碼是兩個結果:

In [70]: "mn".encode('utf-8')
Out[70]: b'\xef\xbd\x8d\xef\xbd\x8e
[In]:"mn".encode('utf-8')

[Out]:b'mn'

它們有什麼對應關系呢?(引自這里)

轉換說明
全形半形轉換說明
有規律(不含空格):
全形字元unicode編碼從65281~65374 (十六進制 0xFF01 ~ 0xFF5E)
半形字元unicode編碼從33~126 (十六進制 0x21~ 0x7E)
特例:
空格比較特殊,全形為 12288(0x3000),半形為 32(0x20)
除空格外,全形/半形按unicode編碼排序在順序上是對應的(半形 + 0x7e= 全形),所以可以直接通過用+-法來處理非空格數據,對空格單獨處理。
代碼在此基礎上改動一下(將unichr改為chr即可,適應python3),即:

def strQ2B(ustring):
"""全形轉半形"""
rstring = ""
for uchar in ustring:
inside_code=ord(uchar)
if inside_code == 12288: #全形空格直接轉換
inside_code = 32
elif (inside_code >= 65281 and inside_code <= 65374): #全形字元(除空格)根據關系轉化
inside_code -= 65248
rstring += chr(inside_code)
return rstring

In [69]: strQ2B('你好python')
Out[69]: '你好python'

F. 如何使用python 打開unicode的文件

Python核心庫的open函數是按照ascii設計的。但是,現在我們越來越多地要面對Unicode文件。好在python提供了codecs模塊,幫我們解決了這個問題。
codecs模塊的open定義如下
open( filename, mode[, encoding[, errors[, buffering]]])
Open an encoded file using the given mode and return a wrapped version providing transparent encoding/decoding.
其中前兩個參數filename和mode和默認的open相同。第三個參數encoding是關鍵,制定了文件的編碼方式。
對於常用的Unicode有這幾種utf_16、utf_16_le、utf_16_be、utf_8,每一種還有一些可用的別名,具體可以查找python manual。
utf_16、utf_16_le、utf_16_be參數的區別是這樣的。
如果指定了utf_16,python會檢查文件的BOM(Byte Order Mark)來判斷,文件類型到底是utf_16_le、utf_16_be。對於沒有BOM的文件會報錯。
如果我們直接指定了utf_16_le、utf_16_be,python就不檢查BOM了。對於沒有BOM的文件很好用。但是,對於有BOM的文件就要注意,它會把BOM當作第一個字元讀入。

G. python3 pickle中怎麼使用unicode編碼

Python特有編碼
Python還內置一些特有的編碼集。
4.2.4.1 文本編碼
Python提供了下面從字元串到位元組數組的編碼,以及位元組數據到字元串的解碼:

Codec

Aliases

Purpose

idna

Implements RFC 3490, see also encodings.idna. Only errors='strict' is supported.

mbcs

dbcs

Windows only: Encode operand according to the ANSI codepage (CP_ACP)

palmos

Encoding of PalmOS 3.5

punycode

Implements RFC 3492. Stateful codecs are not supported.

raw_unicode_escape

Latin-1 encoding with \uXXXX and \UXXXXXXXX for other code points. Existing backslashes are not escaped in any way. It is used in the Python pickle protocol.

undefined

Raise an exception for all conversions, even empty strings. The error handler is ignored.

unicode_escape

Encoding suitable as the contents of a Unicode literal in ASCII-encoded Python source code, except that quotes are not escaped. Decodes from Latin-1 source code. Beware that Python source code actually uses UTF-8 by default.

unicode_internal

Return the internal representation of the operand. Stateful codecs are not supported.
Deprecated since version 3.3: This representation is obsoleted by PEP 393

4.2.4.2 二進制編碼轉換
Python提供下面的二進制編碼轉換:位元組對象到位元組對象映射轉換,不支持使用bytes.decode()。

Codec

Aliases

Purpose

Encoder / decoder

base64_codec [1]

base64, base_64

Convert operand to MIME base64 (the result always includes a trailing '\n')
Changed in version 3.4: accepts any bytes-like object as input for encoding and decoding

base64.b64encode() / base64.b64decode()

bz2_codec

bz2

Compress the operand using bz2

bz2.compress() / bz2.decompress()

hex_codec

hex

Convert operand to hexadecimal representation, with two digits per byte

base64.b16encode() / base64.b16decode()

quopri_codec

quopri, quotedprintable, quoted_printable

Convert operand to MIME quoted printable

quopri.encodestring() / quopri.decodestring()

uu_codec

uu

Convert the operand using uuencode

uu.encode() / uu.decode()

zlib_codec

zip, zlib

Compress the operand using gzip

zlib.compress() / zlib.decompress()

4.2.4.3 文本編碼轉換

下面編解碼器支持字元串到字元串的轉換:

Codec

Aliases

Purpose

rot_13

rot13

Returns the Caesar-cypher encryption of the operand

4.2.5 encodings.idna--國際化域名的應用
本模塊實現了RFC 3490(Internationalized Domain Names in Applications)和RFC 3492(Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN) 的功能。它實現的功能建立在punycode編碼和stringprep模塊之上。
這兩個RFC定義了非ASCII字元表示域名的規范。如果一個域名含有非ASCII字元,需要把它轉換為ASCII兼容編碼的域名(ACE),因為有一些網路協議不支持非ASCII字元的域名,比如DNS查詢、HTTP主機等等。因此這些轉換工作可以人工轉換,也可以是程序轉換。在程序里轉換,需要把UNICODE的域名轉換為ACE兼容的域名之後,才能進行處理,當要給用戶顯示時需要從ACE反向轉換為UNICODE域名。

Python提供了好幾種方法來做轉換的工作:使用idna編解碼來操作UNICODE與ACE之間相互轉換;把輸入字元串分離成標記,然後通過RFC3490進行查表,再合並成相應的域名;最後一種是把輸入字元串分成標記,通過ACE標記轉換。在socket模塊里,就透明地實現了從UNICODE主機名稱轉換為ACE域名,所以應用程序在調用這個模塊時就不需要考慮UNICODE域名轉換為ACE域名的工作了。基於socket模塊之上的功能,比如http.client和ftplib都可以接受UNICODE域名。

當從網路收到的域名,它是不會自動轉換為 UNICODE域名的,需要應用程序進行轉換之後,才能以UNICODE域名顯示給用戶。

模塊encodings.idna也實現nameprep的處理,它能實現主機名稱的標准化處理,域名的大小寫統一化,如果需要這些功能是可以直接使用。

encodings.idna.nameprep(label)
返回label的國際化標志名稱。

encodings.idna.ToASCII(label)
轉換label為ASCII表示,符合標准RFC 3490。

encodings.idna.ToUnicode(label)
轉換label為UNICODE表示,符合標准RFC 3490.
4.2.6 encodings.mbcs--Windows的ANSI編碼
本模塊實現從ANSI(CP_ACP)代碼進行編碼的功能。僅在Windows系統上可用。

4.2.7 encodings.utf_8_sig-UTF-8帶BOM標記的codec編碼
本模塊實現UTF-8的編碼和解碼:把帶有BOM的UTF-8編碼轉換為不帶BOM的UTF-8編碼。當在生成BOM時,只在第一次時生成;當在解碼時跳過相應的BOM標記位元組,再進行解碼。

H. Python如何將Unicode中文字元串轉換成 string字元串

Unicode字元串可以用多種方式編碼為普通字元串,假設unicodestring = u"Hello world",依照所選擇的編碼(encoding),如下:

1、#將Unicode轉換成普通的Python字元串:"編碼(encode)"。

(8)unicode碼在python里怎麼用擴展閱讀:

Python轉換字元和字元串的原因:為了處理不適合用ASCII字元集表示的數據。

在以ASCII碼為中心的語言和環境中,位元組和字元被當做相同的事物。由於一個位元組只能有256個值,這些環境就受限為只支持256個字元Unicode碼,另一方面,有數萬個字元,那意謂著每個Unicode字元佔用多個位元組,因此,你需要在字元和位元組之間作出區別。

(1)UTF-8編碼能處理任何的Unicode字元。它也是與ASCII碼向後兼容的,因此一個純粹的ASCII碼文件也能被考慮為一個UTF-8文件,而且一個碰巧只使用ASCII碼字元的 UTF-8文件和擁有同樣字元的ASCII碼文件是相同的。

這個特性使得UTF-8的向後兼容性非常好,尤其使用較舊的Unix工具時。UTF-8 無疑地是在 Unix上的占優勢的編碼。它主要的弱點是對東方文字是非常低效的。

(2)UTF-16編碼在微軟的操作系統和java環境下受到偏愛。它對西方語言是比較低效,但對於東方語言是更有效率的。一個UTF-16 的變體有時叫作UCS-2 。

(3)ISO-8859編碼系列是256個字元的ASCII碼的超集。他們不能夠支援所有的Unicode碼字元;他們只能支援一些特別的語言或語言家族。

ISO-8859-1,也既Latin-1,包括大多數的西歐和非洲語言,但是不含阿拉伯語。ISO-8859-2,也既Latin-2,包括許多東歐的語言,像是匈牙利語和波蘭語。

I. Python2.7 中文字元編碼,使用Unicode時,選擇什麼編碼格式

關於編碼和亂碼的問題,我簡單講一下。

通常問這類問題的人是混淆了若干個不同的概念,並且他們自己也沒有意識到自己混淆了這些概念的。

J. python中怎樣將unicode轉換成原來的中文

python默認就是unicode存儲。如果是從文件讀取的,在open的參數中指定encoding關鍵字參數就行。如下:

#coding=utf-8/importjson /defLoadQuestion(): /f=open("test.json",'r') qas=json.load(f) question=qas['documents'] /returnquestion/t=LoadQuestion() /printstr(t).decode("unicode-escape")

拓展資料:

通常python2時所有IO讀寫都是byte方式。也就是編碼後的。java也是這樣子。只有python3還有某些特定的模塊才會自動將byte重新轉換成unicode

在python2里的確可以使用s.decode('gbk','ignore')之類的變成unicode。不過在python3里應該是這樣子, s.encode('gbk','ignore')這樣就變成了byte

如果你喜歡 utf-8,可以s.encode(『utf-8','ignore')和s.decode(『utf-8','ignore')

閱讀全文

與unicode碼在python里怎麼用相關的資料

熱點內容
麗水四軸加工中心編程 瀏覽:689
國產系統怎麼解壓 瀏覽:552
戰雙程序員 瀏覽:483
him觸摸編程軟體 瀏覽:931
植物大戰僵屍存檔怎麼轉移安卓 瀏覽:852
java棧的元素 瀏覽:737
程序員與籃球事件 瀏覽:675
app反編譯不完整 瀏覽:788
電腦上的文件夾怎麼調整 瀏覽:7
伺服器無響應是什麼原因呀 瀏覽:984
wd文檔里的app怎麼製作 瀏覽:513
電腦里的文件夾沒有了一般能恢復嗎 瀏覽:418
哪裡有配加密鑰匙的 瀏覽:210
伺服器開不了機怎麼把數據弄出來 瀏覽:958
gif動態圖片怎麼壓縮 瀏覽:521
黑猴子棒球壓縮文件解壓密碼 瀏覽:631
如何讓app適應不同的手機屏幕大小 瀏覽:10
蘋果手機如何給安卓手機分享軟體 瀏覽:761
蘋果電腦怎麼運行騰訊雲伺服器 瀏覽:59
明日之後沙石堡命令助手 瀏覽:261