2

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

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

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

更新

看起来这实际上工作得很好,失败是主干验证的一个更大问题。感谢您的回答。

4

3 回答 3

2

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

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

用正确的引号将你的字符串包裹起来,它就可以工作,JavaScript 可以很好地处理 UTF-8:

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

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

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

于 2013-08-08T02:53:05.997 回答
1

可能尝试(foo === bar),两个等号和三个等号的功能略有不同,有时可能会出现问题。不确定它会起作用,但它应该。还有你有没有用引号括起来的日文字符?

于 2013-08-08T02:47:02.647 回答
0

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

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

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

\x 用于正则表达式,但无法在 JavaScript 中工作,\u 语法有效:

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

if(foo.test(bar)){
    console.log('they are the same');
}
于 2013-08-08T03:01:05.830 回答