使用javascript(泰语)将此unicode转换为字符串

时间:2015-07-17 12:21:13

标签: javascript unicode ascii

มอเตอร์ไซค์

我可以使用JS将此unicode转换为字符串。 (这是泰国语言)

我用

console.log(String.fromCharCode("มอเตอร์ไซค์"));

这不正确。如果它是正确的,它将显示มอเตอร์ไซค์

2 个答案:

答案 0 :(得分:4)

您的Unicode字符串使用HTML实体表示法进行编码。通常,这意味着无论编码字符串是什么,它都会在HTML文档的中间结束,HTML解析器会看到它。

如果您在某个浏览器中以某种方式在JavaScript中获取该字符串,则可以通过让浏览器解析它来获取编码的Unicode:

var str = "มอเตอร์ไซค์";
var elem = document.createElement("div");
elem.innerHTML = str;
alert(elem.textContent);

string.fromCharCode()函数需要一个或多个 numeric 参数;它不会理解HTML实体。因此,如果您在浏览器中(例如,如果您在Node.js程序中有字符串或类似内容),您可以使用您自己的代码转换字符串:

var str = "มอเตอร์ไซค์";
var thai = String.fromCharCode.apply(String, str.match(/x[^;]*;/g).map(function(n) { return parseInt(n.slice(1, -1), 16); }));

只有当涉及的代码点在前64K值内时,该转换才有效。

答案 1 :(得分:2)

你可能想要这样的东西:

var input = "มอเตอร์ไซค์";

var output = input.replace(/&#x[0-9A-Fa-f]+;/g,
                           function(htmlCode) {
                               var codePoint = parseInt( htmlCode.slice(3, -1), 16 );
                               return String.fromCharCode( codePoint );
                           });