recherche

Maison  >  Questions et réponses  >  le corps du texte

Javascript compare des chaînes de différents encodages

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

.
三叔三叔2697 Il y a quelques jours820

répondre à tous(3)je répondrai

  • 淡淡烟草味

    淡淡烟草味2017-07-05 10:45:04

    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')

    répondre
    0
  • 欧阳克

    欧阳克2017-07-05 10:45:04

    console.log(buf1.toString().localeCompare(buf2.toString('utf16le')) === 0)

    répondre
    0
  • 滿天的星座

    滿天的星座2017-07-05 10:45:04

    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
    

    répondre
    0
  • Annulerrépondre