Chcę porównać dwa ciągi w kodzie JavaScript, które są takie same, a jednak operator równości ==
zwraca wartość false. Jeden ciąg zawiera znak specjalny (np. Duński å
).Porównanie ciągów znaków Javascript kończy się niepowodzeniem podczas porównywania znaków Unicode.
kod JavaScript:
var filenameFromJS = "Designhåndbog.pdf";
var filenameFromServer = "Designhåndbog.pdf";
print(filenameFromJS == filenameFromServer); // This prints false why?
Rozwiązanie Co pracował dla mnie jest Unicode normalizacji jako slevithan zauważył.
Rozwinąłem moją oryginalną aplikację jsfiddle, aby utworzyć wersję z biblioteką normalizacyjną zasugerowaną przez slevithan. Link: http://jsfiddle.net/GWZ8j/1/.
Zobacz ten artykuł o '' == vs === '' http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-co-equal-operator-i-use – Steve
@Steve Jeśli oba operandy są tego samego typu, nie ma znaczenia, czy używasz luźnego, czy ścisłego porównania. – PointedEars