suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript vergleicht Zeichenfolgen unterschiedlicher Kodierung

So vergleichen Sie zwei Zeichenfolgen mit unterschiedlichen Codierungen in 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'))

Ausgabe

¿Cómo estás?
¿Cómo estás?
false

Die Kodierungen sind unterschiedlich, aber die Zeichen, die sie darstellen, sind die gleichen. Wie man vergleicht, um „true“ zurückzugeben

三叔三叔2727 Tage vor847

Antworte allen(3)Ich werde antworten

  • 淡淡烟草味

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

    Javascript 的 === 判断字符串是否相同根据 unicode code point value

    buf1.toString() 与 buf2.toString('utf16le') 不同的原因是后者含有零宽度的用以表示端序的字符。

    不考虑这种空白字符的情况下判断字符是否相同可采用 localeCompare

    '\u0000=-='.localeCompare('=-=\ufeff')

    Antwort
    0
  • 欧阳克

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

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

    Antwort
    0
  • 滿天的星座

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

    我本地试了下,字符串长度不一样,根据你的需求可以用试试用下面的方式进行比较

    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
    

    Antwort
    0
  • StornierenAntwort