文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

node utf8汉字乱码怎么办

2023-05-14 21:58

关注

node utf8汉字乱码怎么办

本教程操作环境:Windows10系统、node v14.16.0版、DELL G3电脑

node 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的编码,这下就头大了。

430c177f0d9b4688b1a0c0b65fb9434.jpg

然后我试了试ascii发现还是不行,于是我试了一下binary结果ok了。

7dcb312896856386e9457146c4a72aa.jpg

**模糊查询执行完成没问题了,在返回的数据的时候发现都还是GBK编码。那简单啊!!!!那就转成utf8

Name=iconv.decode(name,'gbk')

然后返回发现没问题,那ok完成了。

没过一会别人就测出bug说人的名字没有显示完全!!!!

结果有的人的名字出现了这个符号�。。。。。

百度发现说解码不全,暂无任何解决方法。。。

最后没办法只能用了indexOf('�')方法去检索字符串中出现生僻字

然后记录其状态再用PHP进行转码。

总之一个字,坑!**

补充:node.js的gbk转utf8 遇见一些生僻字还是会转不出来出现乱码,建议有gbk的库别让node去做中文转码之类的事情,换别的语言吧。

以上就是node utf8汉字乱码怎么办的详细内容,更多请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯