Comment comparer deux chaînes avec des encodages différents en javascript
const buf1 = Buffer.from('c2bf43c3b36d6f20657374c3a1733f', 'hex')
const buf2 = Buffer.from('fffebf004300f3006d006f002000650073007400e10073003f00', 'hex')
console.log(buf1.toString())
console.log(buf2.toString('utf16le'))
console.log(buf1.toString() === buf2.toString('utf16le'))
Sortie
¿Cómo estás?
¿Cómo estás?
false
Les encodages sont différents mais les caractères qu'ils représentent sont les mêmes.Comment comparer pour renvoyer vrai
.
Javascript
===
détermine si les chaînes sont identiques en fonction de la valeur du point de code Unicodebuf1.toString() diffère de buf2.toString('utf16le') car ce dernier contient des caractères de largeur nulle pour représenter l'endianité.
Il peut être utilisé pour déterminer si les caractères sont identiques sans prendre en compte ces espaces blancs
localeCompare
Je l'ai essayé localement et les longueurs de cordes sont différentes. Vous pouvez essayer la méthode suivante pour comparer en fonction de vos besoins
.