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
Javascript
===
menentukan sama ada rentetan adalah sama berdasarkan nilai titik kod unicodebuf1.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
Saya mencubanya secara tempatan dan panjang rentetannya berbeza Anda boleh mencuba kaedah berikut untuk membandingkan mengikut keperluan anda