ascii plot中文 - Python UnicodeDecodeError-我誤解了編碼嗎?



matplotlib中文 seaborn中文 (5)

為什麼這不起作用的任何想法? 我真的認為'忽略'會做正確的事情。

>>> 'add \x93Monitoring\x93 to list '.encode('latin-1','ignore')
Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
UnicodeDecodeError: 'ascii' codec can't decode byte 0x93 in position 4: ordinal not in range(128)

Answers

這似乎有效:

'add \x93Monitoring\x93 to list '.decode('latin-1').encode('latin-1')

有什麼問題嗎? 我想知道'ignore','replace'和其他類似的編碼錯誤處理何時進來?


遇到同樣的問題; 但是,無法理解如何正確地包含編碼語法而不會產生更多錯誤或語法錯誤無效。

 genesis_block = {
    'hash': hash_function({
        'block_number': 0,
        'parent_hash': None,
        'transaction_count': 1,
        'transaction': [{'Tom': 10}]
    }),
    'contents': {
        'block_number': 0,
        'parent_hash': None,
        'transaction_count': 1,
        'transaction': [{'Tom': 10}]
    },
}

block_chain = [genesis_block]
chain_state = {'Tom': 10}

編碼可用於unicode字符串,但你在那裡的字符串似乎不是unicode(嘗試使用u'add \ x93Monitoring \ x93列出')

>>> u'add \x93Monitoring\x93 to list '.encode('latin-1','ignore')
'add \x93Monitoring\x93 to list '

......他們被稱為“編碼”的原因......

一個小序言:將unicode視為常態或理想狀態。 Unicode只是一個字符表。 №65是拉丁首都A.№937是希臘首都歐米茄。 只是。

為了使計算機存儲和/或操作Unicode,它必須將其編碼為字節。 Unicode的最簡單編碼是UCS-4; 每個字符佔用4個字節,所有~1000000個字符都可用。 4個字節包含Unicode表中的字符數作為4字節整數。 另一個非常有用的編碼是UTF-8,它可以編碼任何帶有一到四個字節的Unicode字符。 但也有一些有限的編碼,如“latin1”,其中包括非常有限的字符,主要由西方國家使用。 這種編碼每個字符只使用一個字節。

基本上,Unicode可以用許多編碼進行編碼,編碼的字符串可以解碼為Unicode。 問題是,Unicode來得很晚,所以我們所有使用8位字符集長大的人都學得太晚了,以至於我們一直使用編碼字符串。 編碼可以是ISO8859-1,或Windows CP437或CP850,或者,或者,或者,取決於我們的系統默認值。

所以,當你在源代碼中輸入字符串“add”Monitoring“to list”(我想你想要字符串“add”Monitoring“to list”,注意第二個引用),你實際上已經在使用字符串了根據您系統的默認代碼頁編碼 (通過字節\ x93我假設您使用Windows代碼頁1252,“西方”)。 如果要從中獲取Unicode,則需要解碼 “cp1252”編碼中的字符串。

所以,你打算做的是:

"add \x93Monitoring\x94 to list".decode("cp1252", "ignore")

不幸的是,Python 2.x也包含了字符串的.encode方法; 這是“特殊”編碼的便利功能,如“zip”或“rot13”或“base64”編碼,與Unicode無關。

無論如何,你需要記住的往返Unicode轉換是:

  • Unicode字符串被編碼為Python 2.x字符串(實際上是一個字節序列)
  • Python 2.x字符串被解碼為Unicode字符串

在這兩種情況下,您都需要指定要使用的編碼

我不是很清楚,我很困,但我希望我能幫忙。

PS一個幽默的旁注:瑪雅人沒有Unicode; 古羅馬人,古希臘人,古埃及人也沒有。 他們都有自己的“編碼”,對其他文化幾乎沒有尊重。 所有這些文明都崩潰了。 想想吧! 為了人類的利益,讓你的應用程序具有Unicode感知能力。 :)

PS2請不要破壞前面的消息說“但中國人......”。 但是,如果您覺得傾向於或有義務這樣做,那麼通過認為Unicode BMP主要由中文表意文字填充來延遲它,ergo中文是Unicode的基礎。 只要人們開發支持Unicode的應用程序,我就可以繼續發明令人髮指的謊言。 乾杯!


expression1 if condition else expression2

>>> a = 1
>>> b = 2
>>> 1 if a > b else -1 
-1
>>> 1 if a > b else -1 if a < b else 0
-1




python unicode ascii encode ignore