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. javascript - 关于jsp中嵌入js代码的问题2. javascript - 初学angularJS+express,路由路径中/转换成%2F,导致路径失效,求原因?3. javascript - F12进入开发者中心的时候网站根据适口变化跳转到他的移动端网页了?4. html - 急求,能否用flex或者高端点的CSS来布局这个图呢?不想用浮动或定位了5. PHP类中的$this6. html5 - 只用CSS如何实现input框的宽度随框里输入的内容长短自动适应?7. javascript - 如图,百度首页,查看源代码为什么什么都没有?8. javascript - 百度坐标,返回目标附近有哪些坐标9. android - 百度地图拖拽图标后原来位置的图标还在?10. 请教各位大佬,浏览器点 提交实例为什么没有反应

网公网安备