我正在用javascript下載文件,它包含一些特殊字符,例如,如果我在vim或更低版本中打開它,我會看到一行包含caf<E9>
,其中<E9>
是一個特殊字符十六進制值。爲什麼某些字符在JS console.log中出現'破碎'?
如果您查找的十六進制值E9是é
,所以整機線條café
,但如果我在這一行做了console.log
,我沒有得到café
但我得到caf�
。爲什麼會這樣?如何將�
替換爲é
?這些似乎都不起作用。
line.replace(/\x92/g, '')
line.replace('\x92', '')
該文件包含出現同樣的方式不同的十六進制字符(特殊單,雙引號)。爲什麼他們首先會出現這種情況,我該如何解決這些問題?
一些額外的信息可能會有所幫助:當我在vim中打開文件時,它在底部顯示[converted]
。顯然這意味着它將其從fileencoding
vim屬性(即latin1
)的值轉換爲encoding
vim屬性(即utf-8
)的值。
字節單獨0xE9不是UTF-8的有效字符,這是爲什麼VIM沒有顯示爲「E」要用UTF-8表示「é」,它需要兩個字節:0xC3 xA9。要將0xE9視爲「é」,您需要使用不同的編碼下載文件,如latin1。 –