cari

Rumah  >  Soal Jawab  >  teks badan

Javascript membandingkan rentetan pengekodan yang berbeza

Cara membandingkan dua rentetan dengan pengekodan berbeza dalam 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'))

Output

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

Pengekodan berbeza tetapi aksara yang diwakilinya adalah sama

三叔三叔2783 hari yang lalu896

membalas semua(3)saya akan balas

  • 淡淡烟草味

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

    Javascript === menentukan sama ada rentetan adalah sama berdasarkan nilai titik kod unicode

    buf1.toString() berbeza daripada buf2.toString('utf16le') kerana yang terakhir mengandungi aksara lebar sifar untuk mewakili endian.

    Ia boleh digunakan untuk menentukan sama ada aksara adalah sama tanpa mengambil kira aksara ruang putih tersebut localeCompare

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

    balas
    0
  • 欧阳克

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

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

    balas
    0
  • 滿天的星座

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

    Saya mencubanya secara tempatan dan panjang rentetannya berbeza Anda boleh mencuba kaedah berikut untuk membandingkan mengikut keperluan anda

    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
    

    balas
    0
  • Batalbalas