无法在javascript中转换unicode字符

无法在javascript中转换unicode字符,javascript,Javascript,我在javascript中有一个函数,如下所示 function myfun() { var a = "'\u0c39"; alert(a); } 当我调用这个函数时,我能够看到正确的字母(这个字母是泰卢固语字母) 我的问题是我的字符串来自java,类似于“'\\u0c39”。我用了如下方法 function myfun() { var a = "'\\u0c39"; alert(a.replace("\\\\","\\").toString()); } 但是在警报“\u

我在javascript中有一个函数,如下所示

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

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

我的问题是我的字符串来自java,类似于
“'\\u0c39”
。我用了如下方法

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

}
但是在警报
“\u0c39
即将到来。这里可能有什么错误。请帮助我。提前感谢…

在IE 10中工作(包括返回IE7模式):

试试这个:

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);

}

如果您想了解它,正则表达式将查找反斜杠的所有实例(正则表达式文本中需要双转义),后跟正好4个十六进制数字(无论何种情况),然后该函数将用返回值替换由此找到的每个序列的内容。返回值用于将Unicode“代码点”值转换为实际字符,但它需要代码点作为数字(十进制),因此我们必须首先转换4个十六进制字符(第一个括号匹配,因此是函数的第二个参数,第一个参数是我们不需要的整个序列匹配)使用基参数为“16”的函数转换为十进制。

您可以使用此评估代码解决该问题


在该代码中,\\将更改为\并以unicode字符的形式运行评估代码

您的代码工作正常。向我们展示一个实际问题。它没有显示第一次显示的字母字符串文字是否包含一个或两个反斜杠?@FelixKling yes是正确的,我更新了它,看看是否有帮助。它仅适用于单个字符如果我有var a=“'\\u0c2a\\u0c4d”;它不工作了我忘了带“g”标志。。。现在添加…仅供参考,eval()解决方案不是一个安全的解决方案,除非您完全确定其内容。eval()可能会工作,但它不是一个安全的解决方案(除非您碰巧知道确切的输入,并且知道,例如,代码不会添加自己的引号以跳出字符串并执行其他操作)。
function myfun1()
{
  var a = "'\\u0c39";

   alert(eval('"'+a+'"'));   

}

myfun1();