Javascript vergleicht Zeichenfolgen unterschiedlicher Kodierung
三叔
三叔 2017-07-05 10:43:04
0
3
853

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

三叔
三叔

Antworte allen(3)
淡淡烟草味

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

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

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

'\u0000=-='.localeCompare('=-=\ufeff')
学霸
console.log(buf1.toString().localeCompare(buf2.toString('utf16le')) === 0)
滿天的星座

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

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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage