首页 > 语言 > JavaScript > 正文

nodejs和C语言插入mysql数据库乱码问题的解决方法

2024-05-06 15:18:26
字体:
来源:转载
供稿:网友

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

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

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

+--------------------------+----------------------------+| Variable_name | Value  |+--------------------------+----------------------------+| character_set_client | latin1  || character_set_connection | latin1  || character_set_database | latin1  || character_set_filesystem | binary  || character_set_results | latin1  || character_set_server | latin1  || character_set_system | latin1  || character_sets_dir | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+

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

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

[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqldefault-character-set = utf8character_set_server = utf8[mysql]default-character-set = utf8[mysql.server]default-character-set = utf8# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0
[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.piddefault-character-set = utf8[client]default-character-set = utf8

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

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

+--------------------------+----------------------------+| Variable_name | Value  |+--------------------------+----------------------------+| character_set_client | utf8  || character_set_connection | utf8  || character_set_database | utf8  || character_set_filesystem | binary  || character_set_results | utf8  || character_set_server | utf8  || character_set_system | utf8  || character_sets_dir | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选