我正在用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。 –