Rumah > Soal Jawab > teks badan
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
淡淡烟草味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')
欧阳克2017-07-05 10:45:04
console.log(buf1.toString().localeCompare(buf2.toString('utf16le')) === 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