Gleiche Zeichenfolge, aber unterschiedliche Bytecodes

8

Ich habe zwei Zeichenfolgen:

%Vor%

Wenn ich sie mit a == b vergleiche, gibt sie false zurück.

Ich habe die Bytecodes überprüft:

%Vor%

Was ist die Ursache? Wie kann ich es beheben, so dass a == b true zurückgibt?

    
Toàn 27.01.2018, 03:44
quelle

1 Antwort

15

Dies ist ein Problem mit Unicode-Äquivalenz .

Um diese Zeichenfolgen zu vergleichen, müssen Sie sie normalisieren, damit sie beide die gleichen Bytefolgen für diese Zeichenarten verwenden.

%Vor%

unicode_normalize(form=:nfc) [link]

  

Liefert eine normalisierte Form von str unter Verwendung von Unicode-Normalisierungen NFC,   NFD, NFKC oder NFKD. Die verwendete Normalisierungsform wird durch die Form bestimmt,   Dies ist einer der vier Werte: nfc,: nfd,: nfkc oder: nfkd. Das   Standard ist: nfc.

     

Wenn die Zeichenfolge nicht in einer Unicode-Codierung ist, dann ist eine Ausnahme   angehoben. In diesem Zusammenhang bedeutet "Unicode-Codierung" UTF-8,   UTF-16BE / LE und UTF-32BE / LE sowie GB18030, UCS_2BE und   UCS_4BE. Alles andere als UTF-8 wird durch Konvertierung in implementiert   UTF-8, was es langsamer als UTF-8 macht.

    
fongfan999 27.01.2018 04:01
quelle

Tags und Links