我正在用 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
)。
最佳答案
console.log(String.fromCharCode(parseInt(0xe9,10)))
使用parseInt转换为十进制,然后得到字符编码。要将字符转换回:
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
关于javascript - 为什么某些字符出现在 JS console.log 中的 'broken'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41815533/