日语字符的字符串比较

时间:2013-08-08 02:43:06

标签: javascript utf-8 internationalization string-comparison

我需要两个比较字符串来查看它们是否是相同的值,两个字符串都是日语。这个检查似乎失败了,我认为这是JavaScript和UTF-8的一些缺点。是否应该为此成功?我怎样才能让它发挥作用? JavaScript可以转换为\x{57fc}之类的字符串来执行比较吗?

var foo = '郵便番号',
    bar = '郵便番号';

if(foo == bar){
    console.log('they are the same');
}

更新

看起来这实际上工作正常,故障是骨干验证的一个更大的问题。谢谢你的回答。

3 个答案:

答案 0 :(得分:2)

您忘记了字符串上的引号!

在打开浏览器控制台的情况下运行当前代码,由于缺少引号,您将看到ReferenceError(解释器会认为郵便番号是标识符,而不是字符串)。

用合适的引号包装你的字符串,它只是工作,JavaScript可以正常处理UTF-8:

var foo = '郵便番号',
    bar = '郵便番号';

if(foo == bar){
    console.log('they are the same');
}

关于你的第二个问题,你可以使用'\u57fc',但通常你不需要;它与文字'埼'相同。

答案 1 :(得分:1)

可能尝试(foo === bar),两个等号和3个等号的功能略有不同,有时可能会出现问题。不确定它会起作用,但它应该。您是否将日文字符括在引号中?

答案 2 :(得分:0)

您的代码似乎运行得很好,但必须添加引号:

var foo =  "\u90F5\u4FBF\u756A\u53F7",
    bar = "郵便番号";

if(foo === bar){
    console.log('they are the same');
}

\ x用于regular expression但无法在JavaScript中使用,\ u语法有效:

var foo =  /\u90F5\u4FBF\u756A\u53F7/,
    bar = "\u90F5便番号";

if(foo.test(bar)){
    console.log('they are the same');
}