位置: 编程技术 - 正文

nodejs和C语言插入mysql数据库乱码问题的解决方法(nodejs来一打c++扩展)

编辑:rootadmin

推荐整理分享nodejs和C语言插入mysql数据库乱码问题的解决方法(nodejs来一打c++扩展),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs c,nodemcu c语言,nodejs调用c++函数,nodejs调用c++函数,nodemcu c语言,nodejs c语言,nodejs c语言,nodejs c,内容如对您有帮助,希望把文章链接给更多的朋友!

在这里记录了nodejs过程中的一些乱码情况,这里的乱码主要是由于网页的编码方式与nodejs的默认解码方式(utf8)不一致所造成的。这一次要说一下的是在C语言和nodejs与MySQL进行交互的时候出现的乱码问题。

1,由于爬虫程序在多个Docker中执行,因此我需要定期的同步每一个docker中的mysql数据到一个全局的mysql数据表中。使用nodejs进行数据同步,出现中文乱码。要知道在每一docker中的中文是不存在乱码的。原因是nodejs默认处理字符是utf8,而mysql默认是latin1,毕竟是欧洲人开发的数据库。分析如下

命令show variables like 'char%';得到的结果如下:

即在建立数据库的时候不特别指定,则数据库,数据表的以及数据字段的编码格式为默认值,而默认值在不更改配置文件的时候是latin1(默认安装形式)。由于utf8是较为通用的编码方式,因此我们将数据库的所有编码方式改为utf8。这里需要说明的是mysql的编码分为好几个层次,包括数据库级别,数据表级别以及数据字段级别等,我这里没有去深究这些方面,一个个去设置每个字段,每个表的编码方式,而是把所有的编码方式均设置为utf8。具体如下:

vi /etc/my.cnf修改my.cnf文件如下:

修改完之后,重起mysql服务service mysqld restart

命令show variables like 'char%';再次查看编码格式,得到的结果如下:

可以看到所有的编码格式都会变成utf8,至此在建立数据库和数据表,数据字段的时候如果不特别指定,那么则会采用默认的编码方式,即现在的utf8。

2,虽然编码格式从latin1变成了utf8,但是我这里还是遇到如下的问题。

Specified key was too long; max key length is bytes

nodejs和C语言插入mysql数据库乱码问题的解决方法(nodejs来一打c++扩展)

意思是key值长度大于个字节了,这里面的key值长度指的是定义key值时候的长度和乘以编码格式字节数,而不指实际长度。同时由于取1utf8=3字节(这个我是看别人都是这么说的,具体取多少我这边不确定),因此将其和乘以3之后就大于个字节了。原先latin1是没问题的(取的是1)。

解决办法即就是(1),缩减key值的定义长度。(2),不使用utf8编码。(3),因为默认DB engine 是MyIsAm,把其换成innodb。我使用方式(3),然后错误得以消除。

3,这个时候又出现了如下问题:

这个问题的原因还是utf8所导致的,在latin1编码格式下,我设置了VARCHAR ()类型为主键是没有问题的,而utf8则不行,是由于utf8编码取的是3字节,也就说,只能容纳个utf8编码格式的VARCHAR。因此定义的时候定义为VARCHAR ()问题得以消除,或者换一种数据类型。

4,至此我使用nodejs进行数据库的读写都是没有问题的,但是我在使用C 语言的时候,发现插入utf8编码的中文,仍然显示的是乱码。原因可能由多种,这里面我说一下我遇到的两种情况。首先确认本地系统的默认编码方式,使用locale命令进行查看(Linux),通常情况应该是utf8,为了保险期间,我在C语言中加入了如下的代码显示指定编码方式

这个时候,C语言执行mysql_query插入数据的时候,数据库仍然显示乱码。解决方法如下:

即在执行数据库插入命令前,多加上一行显示的说明使用utf8方式执行。

由于nodejs插入的时候没有C语言的问题,我就简单构想了一下如下原因,纯属个人猜测:

由于C语言使用的是mysql官方提供的api接口,而且mysql是由于欧洲人开发的,开始的时候没想到会应用那么广泛,因此使用了latin1默认编码,随着mysql应用的人越来越多,因此在支持其他编码的时候就需要在原来的接口上打补丁,因此就会出现上面显示的指定编码格式,并没有做到接口和数据库默认编码能够自动保持一致的情况。

对于nodejs来说,连接数据库的行为会由nodejs进行封装,考虑的就相对全面,因此没有C 语言中的问题。

最后我发现DB engine 从MyIsAm换成innodb,读取速度好变慢了,不知是啥原因,知道的麻烦告知一声。

以上所述是小编给大家介绍的nodejs和C语言插入mysql数据库乱码问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

详解Node.js中exports和module.exports的区别 今天看了下node.js的require方法的源码,终于搞清楚exports和module.exports的区别了。我们知道,node.js的模块暴露有两种方法。1.方式一:用exports//a.jsexports.log

利用node.js本地搭建HTTP服务器 我们的目的比较简单,利用node.js在本地搭建HTTP服务器,实现helloword。系统环境:winbitIP:.0.0.1Node.js:v6..2Npm:3..Git:2..2.2--bit基本安装:1.Node.js安

node.js(express)中使用Jcrop进行图片剪切上传功能 需求说明简单来说就是要实现用户上传头像,并且要保存用户裁切后的部分作为用户头像。第一步,选择图片:第二步,在弹窗页面中展现并进行裁切

标签: nodejs来一打c++扩展

本文链接地址:https://www.jiuchutong.com/biancheng/379412.html 转载请保留说明!

上一篇:iOS + node.js使用Socket.IO框架进行实时通信示例(nodejs apply)

下一篇:详解Node.js中exports和module.exports的区别(node.js promise)

  • 查账征收纳税申报表
  • 增值税核算应设置什么
  • 营业成本和生产成本的公式
  • 职工食堂费用计入管理费用
  • 收到公司发来的材料,计入会计分录
  • 固定资产分期付款会计处理
  • 印花税和增值税一起扣款有影响吗
  • 固定资产入股交什么税
  • 收到货物损失赔偿标准
  • 盈余公积未分配利润
  • 不得抵扣的进项税额转出会计分录
  • 股权转让时的资金是什么
  • 收到进口增值税发票可以直接抵扣吗
  • 公司注销时认缴不到位怎么办
  • 法人的往来款可以转为实收资本吗?
  • 业务人员出差住宿费记什么科目
  • 租金收入增值税纳税义务
  • 汇算清缴时费用占收入多少
  • 小规模纳税人附加税优惠政策2023
  • 兼兼的意思
  • 公司购买投影仪的必要性?
  • 怎么查以前申报的财务报表
  • 季度不超过30万免税分录
  • 超过三年的坏帐损失税前扣除怎样规定?
  • 鸿蒙桌面卡片怎么变小
  • 收到服务费分录怎么写
  • 高新技术企业研发
  • 商贸公司商品品种规格多如何核算
  • 单位交水费会计分录
  • 苹果紧急提醒
  • 目前光学变焦最大支持多少倍
  • 市面最高版本
  • 国有资产无偿使用违反什么规定
  • 企业租赁发票税率是多少2023年
  • 长期应付款项目的列示金额
  • 变动成本法计算营业利润
  • 监事 兼职
  • Asian elephants in West Bengal, India (© Avijan Saha/Minden Pictures)
  • php判断密码长度
  • 下岗再就业有什么优惠政策
  • 为公司垫付费用,怎么要回
  • 银行询证函费用减免
  • 大型语言模型的教育应用
  • vue前端项目实战
  • 进口固定资产支付的关税
  • 高德地图的2种导航方式
  • 三栏式明细账对方科目有多个怎么办
  • 一般纳税人销售旧货适用征收率是?
  • 比赛奖金怎么做账
  • 预计可变现净值与账面成本的关系
  • 应交税费的明细账怎么登记
  • 2021年股权变更要怎么办理?
  • sqlceil函数用法
  • 一般纳税人开普票税率是多少
  • mysql存long
  • 建筑公司包工包料提供建筑服务
  • 无形资产的会计准则的相关规定
  • 去年城建税多计提了怎么办
  • 为什么运输合肥料检测核辐射人会拿一个玻璃棒
  • 专家评审费如何入账
  • 中级会计考试时间
  • 同一控制下企业合并
  • 进销存的会计处理实务
  • 企业收到政府专项奖励
  • 专票不报销公司查得到吗
  • 股东分红入什么科目利润分配~应付利润
  • 营业成本包括三大费用如何称呼
  • ubuntu如何创建文件
  • pniopcac.exe是什么
  • 当ie7不认!important之后 [布局的解决办法]
  • 在解决ul居中问题时想到的几点
  • Android之Volley
  • 设计一个windows
  • python 入门
  • eclipse开发安卓app实例
  • unity3d怎么做动画
  • node中的事件循环
  • 谷歌chrome浏览器网页版网址
  • 销售不动产增值税税率
  • 消费税的纳税人是买方还是卖方
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设