Javascript 比较不同编码的字符串
问题描述
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’))
输出
¿Cómo estás?¿Cómo estás?false
编码不同但是他们代表的字符是一样的,该如何比较才能返回 true
问题解答
回答1:Javascript 的 === 判断字符串是否相同根据 unicode code point value
buf1.toString() 与 buf2.toString(’utf16le’) 不同的原因是后者含有零宽度的用以表示端序的字符。
不考虑这种空白字符的情况下判断字符是否相同可采用 localeCompare
’u0000=-=’.localeCompare(’=-=ufeff’)回答2:
console.log(buf1.toString().localeCompare(buf2.toString(’utf16le’)) === 0)回答3:
我本地试了下,字符串长度不一样,根据你的需求可以用试试用下面的方式进行比较
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
相关文章:
1. android - weex 项目createInstanceReferenceError: Vue is not defined2. android - 哪位大神知道java后台的api接口的对象传到前端后输入日期报错,是什么情况?求大神指点3. PHPExcel表格导入数据库怎么导入4. pdo 写入到数据库的内容为中文的时候写入乱码5. javascript - 如图,百度首页,查看源代码为什么什么都没有?6. vue2.0+webpack 如何使用bootstrap?7. PHP类封装的插入数据,总是插入不成功,返回false;8. mac连接阿里云docker集群,已经卡了2天了,求问?9. 微信渠道二维码怎么使用?10. html5 - html元素select下拉列表在原生app里面为什么不能弹框显示?
