Javascript membandingkan rentetan pengekodan yang berbeza
三叔
三叔 2017-07-05 10:43:04
0
3
856

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

三叔
三叔

membalas semua(3)
淡淡烟草味

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')
学霸
console.log(buf1.toString().localeCompare(buf2.toString('utf16le')) === 0)
滿天的星座

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan