我在javascript中下载文件并且它包含一些特殊字符,例如,如果我在vim或更少的时候打开它,我会看到包含caf<E9>
的行,其中<E9>
是特殊字符十六进制值。
如果你查找E9的十六进制值是é
,那么整行是café
,但是如果我在那行上做console.log
,我就不会这样做。得到café
,但我得到caf�
。为什么会这样?
如何用�
替换奇怪的值é
?这些似乎都不起作用。
line.replace(/\x92/g, '')
line.replace('\x92', '')
该文件包含以相同方式显示的不同十六进制字符(特殊单引号和双引号)。为什么他们首先会这样出现,我该如何解决它们呢?
一些可能有用的其他信息:当我在vim中打开文件时,它会在底部显示[converted]
。显然,这意味着它将它从fileencoding
vim属性(latin1
)的值转换为encoding
vim属性的值(utf-8
)。< / p>
答案 0 :(得分:3)
console.log(String.fromCharCode(parseInt(0xe9,10)))
使用parseInt转换为decimal,然后获取字符代码。要将角色转换回来:
parseInt((é).charCodeAt(0), 16) <==== doesn't work check out the link below
MDN有一种扩展charCodeAt以覆盖多语言字符的方法。使用代码和示例查看此链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt