为什么某些角色出现“破碎”?在JS console.log中?

时间:2017-01-23 21:00:09

标签: javascript node.js vim unicode ascii

我在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>

1 个答案:

答案 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