1 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
如果您使用 utf-8 解碼,您也應(yīng)該使用 utf-8 編碼。根據(jù)您想要顯示的 unicode 字符(基本上除了基本拉丁字母、數(shù)字和常用符號(hào)之外的所有字符),utf-8 需要多個(gè)字節(jié)來(lái)存儲(chǔ)它。由于文件是逐字節(jié)讀取的,因此您需要知道下一個(gè)字符是否需要超過(guò)一個(gè)字節(jié)。這由字節(jié)的最高有效位指示。0xb0 轉(zhuǎn)換為二進(jìn)制的 1011 0000,如您所見(jiàn),第一位是 1,這告訴 utf-8 解碼器需要更多字節(jié)來(lái)讀取字符。由于您使用 iso-8859-1 進(jìn)行編碼,因此以下字節(jié)將成為當(dāng)前字符的一部分,并且編碼失敗。如果要對(duì)度數(shù)符號(hào)(°)進(jìn)行編碼,則將其編碼為0xC2 0xB0。
無(wú)論如何:始終使用與要解碼相同的編碼進(jìn)行編碼。如果需要代碼頁(yè)之外的字符,請(qǐng)使用 utf-8。一般來(lái)說(shuō),使用任何 utf 編碼都是一個(gè)很好的建議。
添加回答
舉報(bào)