1

これはばかげているように見えるかもしれませんが、なぜこれが発生するのかはまだわかりません(すでに数回)。

alert(
"WWVhaCA6RCwgYSBsb3Qgb2YgcGVvcGxlIGRvbid0IGtub3cgdGhhdCB0aGlzIGlzIGVuY29kZWQgOkQ=" == 
"WWVhaCA6RCwgYSBsb3Qgb2YgcGVvcGxlIGRvbid0IGtub3cgdGhhdCB0aGlzIGlzIGVuY29kZWQgOkQ=")​

デモ: http: //jsfiddle.net/DerekL/b38Cn/

戻るはずですtrueが、代わりに。を返しますfalse。(モノスペースフォントを使用しているため、メモ帳で)各文字を調べましたが、まったく同じです。

4

4 に答える 4

4

@ElliotBonnevilleが言うように、テキストには隠されたUnicode文字があります。文字列をコマンドプロンプトに貼り付けると表示されます。

スクリーンショット

?最初の文字列の最後にあることに注意してください。

于 2012-11-28T00:08:22.913 に答える
4

奇妙なことに、コードをコピーしてエディターに貼り付けると、次のようになります。

"WWVhaCA6RCwgYSBsb3Qgb2YgcGVvcGxlIGRvbid0IGtub3cgdGhhdCB0aGlzIGlzIGVuY29kZWQgOkQ= ? "

そして2番目の部分:

"WWVhaCA6RCwgYSBsb3Qgb2YgcGVvcGxlIGRvbid0IGtub3cgdGhhdCB0aGlzIGlzIGVuY29kZWQgOkQ="

最初の文字列に余分な「? 」があることに注意してください。視覚的にjsFiddleでは表示されません。あなたの文字列をコピーして、余分な?を削除しました。jsFiddleで実行しました。うまくいきました。

于 2012-11-28T00:11:01.637 に答える
3

ゼロ幅の非改行スペースに挨拶してください!

最初の文字列には0xfeff、末尾に文字が含まれています。これは、ほとんどの最新のエディターでは表示されないため、おそらく気付かなかったでしょう。

ゼロ幅改行なしスペース (ZWNBSP) は、コード ポイント U+FEFF での Unicode 文字の非推奨の使用法です。文字 U+FEFF は、ファイルの開始時にバイト オーダー マークとして使用するためのものです。ただし、他の場所で発生した場合は、Unicode に従って、「ゼロ幅の非改行スペース」として処理する必要があります。この目的での U+FEFF の意図的な使用は非推奨になり、U+2060 word joiner (HTML: ⁠) が強く推奨されます。

出典:ウィキペディア

一見同一の文字列に遭遇した場合は、ループ内を使用してそれらを分解し.charCodeAt()、「不正な」文字を見つける必要があります。

于 2012-11-28T00:13:20.467 に答える
3

この文字列を jsFiddle などからコピーしましたか? メモ帳やブラウザ (気になる場合は Chrome) に表示されない Unicode 文字があり、問題を引き起こしています。最初の文字列をコピーして 2 番目の文字列に貼り付けると (2 つの文字列が同じであることを確認した後)、問題が解消されました。

更新された jsFiddle へのリンクを貼り付けたいのですが、許可されていません。

于 2012-11-28T00:03:52.817 に答える