无法在javascript中转换unicode字符

unable to convert unicode character in javascript

本文关键字:转换 unicode 字符 javascript      更新时间:2023-09-26

JS FIDDLE

我有一个函数在javascript

function myfun()
{
  var a = "''u0c39";
  alert(a);
}

当我调用这个函数时,我能够看到正确的字母(这个字母是泰卢固语字母)。

我的问题是我的字符串来自java,就像"'''u0c39"。我使用如下

function myfun()
{
  var a = "'''u0c39";
  alert(a.replace("''''","''").toString());
}

但在警报''u0c39来了。这里有什么错误呢?请帮帮我。

支持ie10(包括返回IE7模式):http://jsfiddle.net/FersM/2/

试试这个:

function myfun()
{
  var a = "'''u0c39";
  a = a.replace(/''u([a-f0-9]{4})/gi, function (n, hex) {
      return String.fromCharCode(parseInt(hex, 16));
  });
  alert(a);
}

如果你想理解它,正则表达式正在寻找反斜杠(在regex文字中需要双转义)后面正好跟着4个十六进制数字的所有实例(无论哪种情况),然后函数将用返回值替换找到的每个序列的内容。返回值使用fromCharCode将Unicode"码点"值转换为实际字符,但它要求码点为数字(十进制),因此我们必须首先使用parseInt函数将4个十六进制字符(第一个括号匹配,因此是函数的第二个参数,第一个参数是我们不需要的整个序列匹配)转换为十进制,基本参数为"16"。

您可以对该问题使用此eval代码

http://jsfiddle.net/6Hmyk/

function myfun1()
{
  var a = "'''u0c39";
   alert(eval('"'+a+'"'));   
}
myfun1();

在该代码中,''将更改为'并eval代码将其作为unicode字符

运行