node utf8汉字乱码怎么办
node utf8汉字乱码怎么办?
-
node.js实现编码转GBK转UTF8,中文乱码方案
在做这些之前遇见了一个需求,则是用node去做一个姓名的模糊查询。其实这是一个简单再也不能简单的事情,可是却在这个问题上卡了两天。
因为业务需要,给新功能做一个模糊查询。
首先,我得搭建了一个node的http服务,然后我配置了mysql。建立了ORM模型后,准备开始编写sql语句的时候遇见了一个奇怪的事情,由于我的node是utf8的编码。但是我们公司的数据库采用的是GBK的编码,因此导致我在进行数据查询的时候出现了错误,查询失败,原因就是因为编码问题导致。
这问题也很简单,转码呗!!!
开始百度node的转码方法在这里就遇见了iconv-jschardet这个插件,于是去npm了一下。开始使用
const iconv = require('iconv-jschardet');
SarchName = iconv.encode(SarchName, 'gbk');
把前端送上来的字符转成GBK的编码,很开心。
结果还是报错了。因为这个错误,我找了一下午。也不知道转成功了没有,于是试了无数种办法还是无法解决这个编码问题,于是想到了之前在写PHP的时候查询的时候用SQL转成二进制进行模糊匹配。
于是我typeof了一下SarchName居然是Obj我就很纳闷了应该是String于是输出打印了一下,一看是个Buffer。这下明白了原来没有直接转成String那好,我就用Buffer.toString()方法结果还是不行,然后翻了一下文档。发现没有GBK的编码,这下就头大了。
然后我试了试ascii发现还是不行,于是我试了一下binary结果ok了。
**模糊查询执行完成没问题了,在返回的数据的时候发现都还是GBK编码。那简单啊!!!!那就转成utf8
Name=iconv.decode(name,'gbk')
然后返回发现没问题,那ok完成了。
没过一会别人就测出bug说人的名字没有显示完全!!!!
结果有的人的名字出现了这个符号�。。。。。
百度发现说解码不全,暂无任何解决方法。。。
最后没办法只能用了indexOf('�')方法去检索字符串中出现生僻字
然后记录其状态再用PHP进行转码。
总之一个字,坑!**
补充:node.js的gbk转utf8 遇见一些生僻字还是会转不出来出现乱码,建议有gbk的库别让node去做中文转码之类的事情,换别的语言吧。
本文出至:学新通
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通
- 本文地址: https://www.swvq.com/boutique/detail/1929
- 联系方式: luke.wu@swvq.com
- 来源链接: www.php.cn/website-design-ask-500772.html
-
windows上查看nginx是否启动
PHP中文网 04-19 -
2023年最新的28道PHP面试题附答案
PHP中文网 03-27 -
navicat怎样清除注册表
PHP中文网 04-05 -
ChatGPT应用通过Axios+EventSource使用GPT3.5 API
uWydnA 03-13 -
docker hub 进不去怎么办
PHP中文网 03-15 -
推荐五款xml编辑工具
PHP中文网 03-04 -
强力推荐10款好看使用的Bootstrap后台管理系统模板
PHP中文网 03-09 -
vscode怎么调整代码大小两种方法
PHP中文网 03-11 -
navicat连接sqlserver数据库
PHP中文网 04-03 -
navicat删除的数据能还原吗
PHP中文网 04-09