這可能是一個微型優化,但我想檢查給定字節流是否有效UTF-8,因爲它通過我的應用程序,但我不想保留結果解碼的代碼點。換句話說,如果我打電話給large_string.decode('utf-8')
,假設編碼成功了,我不希望保留通過解碼返回的Unicode字符串,並且不希望浪費內存。驗證一個字節流是否有效UTF-8(或其他編碼)沒有複製
有幾種方法可以做到這一點,例如一次讀取幾個字節,嘗試decode()
,然後追加更多字節,直到decode()
成功(或者我已經用盡了單個字符的最大字節數編碼)。但ISTM應該可以使用現有的解碼器,這樣就可以簡單地丟棄已解碼的unicode字符,而不必自己推出解碼器。但是沒有什麼可以立即想到刷新stdlib文檔。
您是否可以將長字符串/流分割爲「塊」,以確保不會在一對字符之間劃分有效的多字節trf8編碼字符? – martineau