Javascript compare des chaînes de différents encodages
三叔
三叔 2017-07-05 10:43:04
0
3
881

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

.
三叔
三叔

répondre à tous(3)
淡淡烟草味

Javascript === détermine si les chaînes sont identiques en fonction de la valeur du point de code Unicode

buf1.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

'\u0000=-='.localeCompare('=-=\ufeff')
学霸
console.log(buf1.toString().localeCompare(buf2.toString('utf16le')) === 0)
滿天的星座

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

.
const buf1 = Buffer.from('c2bf43c3b36d6f20657374c3a1733f', 'hex')
const buf2 = Buffer.from('fffebf004300f3006d006f002000650073007400e10073003f00', 'hex')
var b1=buf1.toString();
var b2=buf2.toString('utf16le');
console.log(b1.length)
console.log(b2.length)

console.log(b2.includes(b1));

//输出结果
// 12
// 13
// true
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal