-1
據我所知,Python 2.7字節的字符串只取ASCII字符,我不知道爲什麼下面的工作?看起來ü是以其他格式編碼的,你能解釋一下嗎?Python 2.7字符串中的非ASCII字符
>>> s = "Flügel"
>>> s
'Fl\x81gel'
據我所知,Python 2.7字節的字符串只取ASCII字符,我不知道爲什麼下面的工作?看起來ü是以其他格式編碼的,你能解釋一下嗎?Python 2.7字符串中的非ASCII字符
>>> s = "Flügel"
>>> s
'Fl\x81gel'
我明白了Python 2.7字節的字符串只需要ASCII字符,
你誤會了。 Python字節字符串取任何有效字節。字節基本上是0到255之間的整數值(ASCII覆蓋0到127)。
當您在終端或控制檯中打開交互式解釋器提示符後,該終端或控制檯的配置將確定可鍵入併發送到Python的字節。您似乎正在使用一個發送拉丁語文本(number of variants發送0x81
爲ü
)。 Python將它存儲在字節串中。
您可以通過查看sys.stdin.encoding
來查看使用的編解碼器。
礦被配置成處理UTF-8,其使用字節來編碼相同的字符(U+00FC LATIN SMALL LETTER U WITH DIAERESIS):
>>> import sys
>>> sys.stdin.encoding
'UTF-8'
>>> s = 'Flügel'
>>> s
'Fl\xc3\xbcgel'
否,Python的字節串採取任何* *字節在0-255範圍內(十六進制0x00到0xFF),而不僅僅是0-127(0x00-0x7F)的ASCII範圍。 –
Python 2.7字節的字符串需要字節序列 - 不只是ASCII字符。字節可以具有'0x00' - >'0xff'的任意值。 – mgilson
當你鍵入'ü'時,你的終端發送字節0x81,這就是存儲的內容。 –