精华内容
下载资源
问答
  • 我这里有两个地方出现乱码问题,一个是C程序中写的中文字符存入乱码,解决方法为: 在调用sql语句执行mysql_query之前,先加上这一句: char * query = “set names ‘utf8’”; mysql_query(mysql_...

    最近在用spring boot框架写app服务器的后端代码,然后用C语言写硬件服务器的代码,写完测试的时候发现存进数据库里的中文字符都变为了乱码。

    我这里有两个地方出现乱码问题,一个是C程序中写的中文字符存入是乱码,解决方法为:
    在调用sql语句执行mysql_query之前,先加上这一句:
    char * query = “set names ‘utf8’”;
    mysql_query(mysql_handler, query);

    在这里插入图片描述
    这样在册运行测试,发现C程序插入的中文没有乱码。

    上面的问题解决之后,在spring boot框架中写的Java程序也存在这种问题,下面是解决这个问题的方案:
    第一步:检查自己数据库的编码格式
    进入数据库,然后输入sql语句:
    show variables like ‘char%’;
    数据库编码格式
    可以看到我的数据库现在都是utf8格式的,如果character_set_server的编码不是utf8,需要在**/etc/my.cnf**文件中修改设置
    character_set_server=utf8

    修改之后需要重启mysql服务
    service mysqld restart

    第二步:在spring boot程序中链接数据库的配置修改:
    在配置一栏中的url后面添加
    ?useUnicode=true&characterEncoding=UTF-8
    原配置
    添加之后的配置
    然后重新测试,发现正常了。
    在这里插入图片描述


    展开全文
  • Android端数据存入MySQL数据库字符乱码问题
    展开全文
  • MySQL字符乱码

    千次阅读 2019-06-07 23:24:53
    MySQL数据库查询结果乱码,这是大家比较常见的情形。到底是什么原因导致出现查询结果为乱码呢,本文主要通过演示来理解乱码产生的原因,以及如何解决字符乱码,供大家参考。 一、字符编码对比 SELECT hex(convert...

    MySQL数据库查询结果乱码,这是大家比较常见的情形。到底是什么原因导致出现查询结果为乱码呢,本文主要通过演示来理解乱码产生的原因,以及如何解决字符集乱码,供大家参考。

    一、字符编码对比

    	SELECT hex(convert('love' USING latin1)) latin_value,
    	       hex(convert('love' USING gb2312)) gb2312_value,
    	       hex(convert('love' USING gbk))    gbk_value,
    	       hex(convert('love' USING utf8))   utf8_value;
    	+-------------+--------------+-----------+------------+
    	| latin_value | gb2312_value | gbk_value | utf8_value |
    	+-------------+--------------+-----------+------------+
    	| 6C6F7665    | 6C6F7665     | 6C6F7665  | 6C6F7665   |
    	+-------------+--------------+-----------+------------+
    	
    	SELECT hex(convert('爱' USING latin1)) latin_value,
    	       hex(convert('爱' USING gb2312)) gb2312_value,
    	       hex(convert('爱' USING gbk))    gbk_value,
    	       hex(convert('爱' USING utf8))   utf8_value;
    	+-------------+--------------+-----------+------------+
    	| latin_value | gb2312_value | gbk_value | utf8_value |
    	+-------------+--------------+-----------+------------+
    	| 3F          | B0AE         | B0AE      | E788B1     |
    	+-------------+--------------+-----------+------------+  
    	
    	SELECT convert(0x3F USING latin1)   latin_value,
    	       convert(0xB0AE USING gb2312) gb2312_value,
    	       convert(0xB0AE USING gbk)    gbk_value,
    	       convert(0xE788B1 USING utf8) utf8_value;
       
    	+-------------+--------------+-----------+------------+
    	| latin_value | gb2312_value | gbk_value | utf8_value |
    	+-------------+--------------+-----------+------------+
    	| ?           | 爱           | 爱        | 爱         |
    	+-------------+--------------+-----------+------------+
    

    二、乱码测试

    1、环境准备

    	# grep -Ev "^#|^$" /etc/my.cnf   -- 查看当前my.cnf配置
    	
    	mysql> show variables like 'version';
    	+---------------+------------+
    	| Variable_name | Value      |
    	+---------------+------------+
    	| version       | 5.7.23-log |
    	+---------------+------------+
    
    	mysql> show variables like '%character%';
    	
    	+--------------------------+----------------------------+
    	| Variable_name            | Value                      |
    	+--------------------------+----------------------------+
    	| character_set_client     | gbk                        |
    	| character_set_connection | gbk                        |
    	| character_set_database   | latin1                     |
    	| character_set_filesystem | binary                     |
    	| character_set_results    | gbk                        |
    	| character_set_server     | latin1                     |
    	| character_set_system     | utf8                       |
    	| character_sets_dir       | /usr/share/mysql/charsets/ |
    	+--------------------------+----------------------------+
    
    	DROP TABLE IF EXISTS sakila.colum_charset;
    	
    	CREATE TABLE sakila.colum_charset
    	(
    	   id int not null auto_increment primary key,
    	   c1 varchar(20),
    	   c2 char(20) CHAR SET gbk,
    	   c3 varchar(20) CHARSET gb2312,
    	   c4 char(20) CHARACTER SET utf8,
    	   c5 varchar(20) CHARSET utf8mb4
    	);
    	
    	mysql> show create table sakila.colum_charset\G
    	*************************** 1. row ***************************
    	       Table: colum_charset
    	Create Table: CREATE TABLE `colum_charset` (
    	  `id` int(11) NOT NULL AUTO_INCREMENT,
    	  `c1` varchar(20) DEFAULT NULL,
    	  `c2` char(20) CHARACTER SET gbk DEFAULT NULL,
    	  `c3` varchar(20) CHARACTER SET gb2312 DEFAULT NULL,
    	  `c4` char(20) CHARACTER SET utf8 DEFAULT NULL,
    	  `c5` varchar(20) CHARACTER SET utf8mb4 DEFAULT NULL,
    	  PRIMARY KEY (`id`)
    	) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
    

    2、基于默认字符插入数据(gbk)
    – character_set_client gbk
    – character_set_connection gbk
    – character_set_results gbk

    	INSERT INTO sakila.colum_charset(id,
    	                                 c1,
    	                                 c2,
    	                                 c3,
    	                                 c4,
    	                                 c5)
    	VALUES (NULL,'爱','爱','爱','爱','爱');
    	        
    	ERROR 1366 (HY000): Incorrect string value: '\xB0\xAE' for column 'c1' at row 1
    
    	INSERT INTO sakila.colum_charset(id,
    	                                 c1,
    	                                 c2,
    	                                 c3,
    	                                 c4,
    	                                 c5)
    	VALUES (NULL,'love','爱','爱','爱','爱');
    	Query OK, 1 row affected (0.00 sec)
    	
    	mysql> select * from sakila.colum_charset;
    	+----+------+------+------+------+------+
    	| id | c1   | c2   | c3   | c4   | c5   |
    	+----+------+------+------+------+------+
    	|  1 | love | 爱   | 爱   | 爱   | 爱   |
    	+----+------+------+------+------+------+
    

    3、三个变量全部设置为utf8插入数据
    mysql> set names ‘utf8’;
    Query OK, 0 rows affected (0.00 sec)

    	mysql> show variables like '%character%';
    	+--------------------------+----------------------------+
    	| Variable_name            | Value                      |
    	+--------------------------+----------------------------+
    	| character_set_client     | utf8                       |
    	| character_set_connection | utf8                       |
    	| character_set_database   | latin1                     |
    	| character_set_filesystem | binary                     |
    	| character_set_results    | utf8                       |
    	| character_set_server     | latin1                     |
    	| character_set_system     | utf8                       |
    	| character_sets_dir       | /usr/share/mysql/charsets/ |
    	+--------------------------+----------------------------+
    	
    	INSERT INTO sakila.colum_charset(id,
    	                                 c1,
    	                                 c2,
    	                                 c3,
    	                                 c4,
    	                                 c5)
    	VALUES (NULL,'heart','心','心','心','心');        
    	Query OK, 1 row affected (0.00 sec)
    	
    	mysql> select * from sakila.colum_charset;
    	+----+-------+------+------+------+------+
    	| id | c1    | c2   | c3   | c4   | c5   |
    	+----+-------+------+------+------+------+
    	|  1 | love  | 爱   | 爱   | 爱   | 爱   |
    	|  2 | heart | 心   | 心   | 心   | 心   |
    	+----+-------+------+------+------+------+
    
    	INSERT INTO sakila.colum_charset(id,
    	                                 c1,
    	                                 c2,
    	                                 c3,
    	                                 c4,
    	                                 c5)
    	VALUES (NULL,'heart','屌','屌','屌','屌');  -- c3列为gb2312编码
    	        
    	ERROR 1366 (HY000): Incorrect string value: '\xE5\xB1\x8C' for column 'c3' at row 1
    

    4、单个变量character_set_connection设置为latin1插入数据
    mysql> set character_set_connection=latin1;

    	INSERT INTO sakila.colum_charset(id,
    	                                 c1,
    	                                 c2,
    	                                 c3,
    	                                 c4,
    	                                 c5)
    	VALUES (NULL,'heart','情','情','情','情');
    	Query OK, 1 row affected, 4 warnings (0.00 sec)
    	
    	mysql> show warnings \G
    	*************************** 1. row ***************************
    	  Level: Warning
    	   Code: 1300
    	Message: Invalid utf8 character string: '\xE6\x83\x85'
    	
    	-- 乱码出现
    	mysql> select * from sakila.colum_charset;
    	+----+-------+------+------+------+------+
    	| id | c1    | c2   | c3   | c4   | c5   |
    	+----+-------+------+------+------+------+
    	|  1 | love  | 爱   | 爱   | 爱   | 爱   |
    	|  2 | heart | 心   | 心   | 心   | 心   |
    	|  3 | heart | ?    | ?    | ?    | ?    |
    	+----+-------+------+------+------+------+        
    

    5、单个变量character_set_connection设置为gb2312插入数据
    mysql> set character_set_connection=gb2312;

    	INSERT INTO sakila.colum_charset(id,
    	                                 c1,
    	                                 c2,
    	                                 c3,
    	                                 c4,
    	                                 c5)
    	VALUES (NULL,'heart','屌','屌','屌','屌');
    	
    	Query OK, 1 row affected, 4 warnings (0.00 sec)
        
    	mysql> select * from sakila.colum_charset;
    	+----+-------+------+------+------+------+
    	| id | c1    | c2   | c3   | c4   | c5   |
    	+----+-------+------+------+------+------+
    	|  1 | love  | 爱   | 爱   | 爱   | 爱   |
    	|  2 | heart | 心   | 心   | 心   | 心   |
    	|  3 | heart | ?    | ?    | ?    | ?    |
    	|  4 | heart | ?    | ?    | ?    | ?    |
    	+----+-------+------+------+------+------+
    

    6、单个变量character_set_results设置为latin1
    – 测试返回数据

    	mysql> set character_set_results=latin1;
    	Query OK, 0 rows affected (0.00 sec)
    	
    	mysql> select * from sakila.colum_charset;
    	+----+-------+------+------+------+------+
    	| id | c1    | c2   | c3   | c4   | c5   |
    	+----+-------+------+------+------+------+
    	|  1 | love  | ?    | ?    | ?    | ?    |
    	|  2 | heart | ?    | ?    | ?    | ?    |
    	|  3 | heart | ?    | ?    | ?    | ?    |
    	|  4 | heart | ?    | ?    | ?    | ?    |
    	+----+-------+------+------+------+------+
    	4 rows in set (0.00 sec)
    

    6、单个变量character_set_results设置为gb2312
    – 测试返回数据

    	mysql> set character_set_results=gb2312;
    	Query OK, 0 rows affected (0.00 sec)
    	
    	mysql> select * from sakila.colum_charset;
    	+----+-------+------+------+------+------+
    	| id | c1    | c2   | c3   | c4   | c5   |
    	+----+-------+------+------+------+------+
    	|  1 | love  |    |    |    |    |
    	|  2 | heart |    |    |    |    |
    	|  3 | heart | ?    | ?    | ?    | ?    |
    	|  4 | heart | ?    | ?    | ?    | ?    |
    	+----+-------+------+------+------+------+
    	4 rows in set (0.00 sec)
    

    6、单个变量character_set_results设置为gbk
    – 测试返回数据
    mysql> set character_set_results=gbk;
    Query OK, 0 rows affected (0.00 sec)

    	mysql> select * from sakila.colum_charset;
    	+----+-------+------+------+------+------+
    	| id | c1    | c2   | c3   | c4   | c5   |
    	+----+-------+------+------+------+------+
    	|  1 | love  |    |    |    |    |
    	|  2 | heart |    |    |    |    |
    	|  3 | heart | ?    | ?    | ?    | ?    |
    	|  4 | heart | ?    | ?    | ?    | ?    |
    	+----+-------+------+------+------+------+
    	4 rows in set (0.00 sec)
    

    7、单个变量character_set_results设置为utf8
    – 测试返回数据

    	mysql> set character_set_results=utf8;
    	Query OK, 0 rows affected (0.00 sec)
    	
    	mysql> select * from sakila.colum_charset;
    	+----+-------+------+------+------+------+
    	| id | c1    | c2   | c3   | c4   | c5   |
    	+----+-------+------+------+------+------+
    	|  1 | love  | 爱   | 爱   | 爱   | 爱   |
    	|  2 | heart | 心   | 心   | 心   | 心   |
    	|  3 | heart | ?    | ?    | ?    | ?    |
    	|  4 | heart | ?    | ?    | ?    | ?    |
    	+----+-------+------+------+------+------+
    	4 rows in set (0.00 sec)             
    

    8、本地环境变量影响客户端字符集设定
    – 在my.cnf中未配置客户端字符集,如果配置后,则使用配置文件中设定的字符集

    	[root@centos7 ~]# export LANG=en_US.UTF-8
    	[root@centos7 ~]# mysql -e "show variables like 'character%'"
    	+--------------------------+----------------------------+
    	| 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/ |
    	+--------------------------+----------------------------+
    	
    	[root@centos7 ~]# export LANG=zh_CN.GBK
    	[root@centos7 ~]# mysql -e "show variables like 'character%'"
    	+--------------------------+----------------------------+
    	| Variable_name            | Value                      |
    	+--------------------------+----------------------------+
    	| character_set_client     | gbk                        |
    	| character_set_connection | gbk                        |
    	| character_set_database   | utf8                       |
    	| character_set_filesystem | binary                     |
    	| character_set_results    | gbk                        |
    	| character_set_server     | utf8                       |
    	| character_set_system     | utf8                       |
    	| character_sets_dir       | /usr/share/mysql/charsets/ |
    	+--------------------------+----------------------------+
    	
    	[root@centos7 ~]# export LANG=zh_CN.GB2312
    	[root@centos7 ~]# mysql -e "show variables like 'character%'"
    	+--------------------------+----------------------------+
    	| Variable_name            | Value                      |
    	+--------------------------+----------------------------+
    	| character_set_client     | gb2312                     |
    	| character_set_connection | gb2312                     |
    	| character_set_database   | utf8                       |
    	| character_set_filesystem | binary                     |
    	| character_set_results    | gb2312                     |
    	| character_set_server     | utf8                       |
    	| character_set_system     | utf8                       |
    	| character_sets_dir       | /usr/share/mysql/charsets/ |
    	+--------------------------+----------------------------+
    

    ==========================================================
    结论:
    character_set_client: 客户端发送的数据是什么编码?
    character_set_connection: 告诉字符集转换器,转换成什么编码?
    character_set_results: 查询的结果用什么编码?
    如果以上三者都为字符集N,可简写为set names ‘N’;

    乱码产生的原因如下:
    a、插入或读取时对应编码环节发生转换导致数据丢失。
    b、如果两个字符集之间无法进行无损编码转换,一定会出现乱码。

    解决方案:
    1、一定要保证character_set_connection字符集大于等于client字符集,否则会丢失数据
    比如: latin1 < gb2312 < gbk < utf8,
    若设置set character_set_client = gb2312,
    那么至少connection的字符集要大于等于gb2312,否则就会丢失数据
    2、一定要保证character_set_results大于等于数据存入的字符集,否则会丢失数据
    比如:如存储的字符为utf8,而返回character_set_results为gbk,数据被截断

    3、所有变量使用统一的字符编码,如utf8或者utf8mb4

    展开全文
  • 在web项目中,读取字符串到数据库,但是无论我怎样修改页面编码、文件编码、以及存储的字符串编码,在数据库中依旧是乱码。 因此推测问题出在数据库。但在我修改表的编码以及数据库编码为UTF-8之后,依旧是乱码。 ...

    这是一个填坑的文章,记录下来,记住这次教训。。。

    踩了一个很深很深的坑(主要因为学艺不精QAQ)。在web项目中,读取字符串到数据库,但是无论我怎样修改页面编码、文件编码、以及存储的字符串编码,在数据库中依旧是乱码。

    因此推测问题出在数据库。但在我修改表的编码以及数据库编码为UTF-8之后,依旧是乱码。

    原因是因为当初在创建表时就使用的默认编码,因此在建表中每一项数据编码并不是UTF-8。

    只需要将元素下方的字符集设置为UTF-8即可。

    这点破事找了一个上午,气死了气死了气死了。

    展开全文
  • mysql数据库的编码格式设置为utf-8 java项目的编码格式设置为 utf-8 连接mysql字符串后面加入参数:?characterEncoding=UTF-8 jdbc:mysql://localhost:3306/testDB?characterEncoding=UTF-8 ...
  • 1.首先将数据库的字符集和排序规则都改为utf-8 找到要修改的数据库,右键–>编辑数据库 2.修改表中每一个字段的字符集和排序规则为utf-8 找到要修改的表,右键–>设计表,然后按图修改 注意:1.修改每一个要写中文...
  • 第一步:修改mysql配置文件my.inf,添加设置编码格式为utf 第二步:重启mysql ...第三部:将数据重新导入(不重新导入可能还是乱码) 转载于:https://www.cnblogs.com/wu628/p/4798478.html...
  • 最近遇到一串关于MYSQL中文乱码的问题,问题...快通过以下方式解决了:建立连接时编码选择UTF-8,把使用MYSQL字符集之前的勾勾去掉。 数据库的属性设置为: OK,Navicat里的中文字符正常了。于是 ,开心的进...
  • 2.mysql的版本不能太低,低于5.5.3的版本不支持utf8mb4编码; 3.然后将应用依赖的mysql-connector-java升级成最新版(目前最新版是5.1.37),最后修改druid数据源的配置,增加一行<property name=...
  • 查询当前mysql的编码设置: show variables like ‘char%’; 我看了很多教程,一般就是修改my.ini...还有一种修改mysql默认字符集的方法,就是使用mysql的命令 mysql> SET character_set_client = utf8 ; mysql>
  • 不指定编码方式 会乱码 ?characterEncoding=UTF8 * 2. 需要保证指定的编码和实际表的一致 * BatchUpdateException: Incorrect string value: '\xE6\xA2\x81\xE5\xB7\x9D...' for column 'age' at row 1 * 该错误请...
  • 解决mysql 客户端中文字符乱码的解决方案: 使用 MySQL 字符集时的建议 • 建立数据库/表和进行数据库操作时尽量显式指出使用的字符集,而不是依赖于MySQL的默认设置,否则MySQL升级时可能带来很大困扰; • ...
  • spring mysql插入到数据库中的数据乱码问题: 1,创建数据库必须为UTF-8的。 例如:create database test default character set utf8 default 创建完后,再执行建表Sql后,表的collation为utf8_general_ci 2,...
  • 最近,在项目组使用的mysql数据库中,插入数据出现乱码,关于这个问题做了下总结,我们从最基本的地方说起,到错误产生的深层次原因和解决办法。 基本概念 • 字符(Character)是指人类语言中最小的表义符号。例如...
  • 首先,乱码问题本质上来说就是编码和解码采用的编码方案不同。我们时常会遇到数据库的乱码...比如我们在做网页的时候,用户输入中文信息,我们在获取没有很好的解码,就会使其成为乱码,再存入数据库就自然是乱码了...
  • 问题描述JAVA中的类有中文字符,但是存入mysql中出现乱码,同时mysql字符集也是utf-8问题原因因为java连接数据库的时候双方的连接标准没有统一,也就是java传入到mysql数据时没有告诉数据库我会给他的数据是什么...
  • python写入mysql中文乱码问题

    千次阅读 2017-11-04 21:57:27
    将数据导入mysql数据库有多种方法,我用的是写python...要不然中文就乱码了。一、先说使用python调用MySQLdb库吧。要在连接的时候说明客户端命令的编码格式。import MySQLdbdef connectMysql(self, mysqlIP, mysqlport
  • 在学习java web项目过程中,从页面输入的中文文字插入到MySQL数据库中总是乱码。 在web.xml里面也设置了字符集的过滤,依然没有用。 &lt;filter&gt; &lt;filter-name&gt;encodingFilter&lt...
  • MySQL中的字符集字符集和校对规则校对规则命名约定字符集级别及设置服务端字符集和校对规则数据库字符集和校对规则表字符集和校对规则列字符集和校对规则连接字符集和校对规则MySQL字符集修改步骤步骤 字符集和校对...
  • 解决方法 就是添加 ...'url' = 'jdbc:mysql://192.168.9.88:3306/db1?characterEncoding=utf8', 重点是.我source端的表是 utf8mb4. sink端这里只能写utf8,写utf8mb4会报错............. 对比
  • 前记:最近笔者工作比较繁忙,导致本来应该有很多博客需要填坑,一直也没有静下心来好好整理下,今天蹭着夜深人静加之阵阵柔和的轻音乐正好先写上一篇,也算是为自己乱码专栏开个头,当然本专栏主要解决Tomcat...
  • MySQL出现乱码的原因

    千次阅读 2017-05-18 15:39:36
    MySQL出现乱码的原因要了解为什么会出现乱码,我们就先要理解:从...存入MySQL经历的编码转换过程上图中有3次编码/解码的过程(红色箭头)。三个红色箭头分别对应:客户端编码,MySQL Server解码,Client编码向表编码
  • hibernate+mysql 中文存入数据库乱码解决方法
  • 相信大家通过前几篇文章,已经了解了 MySQL 字符集使用相关注意事项。...其中任意一个编码不一致,都会导致表里的数据存入不正确的编码而产生乱码。 比如下面简单一条语句: set @a = "文本字符串"; insert i.
  • 在用C#写一个图书管理系统,使用的mysql...的乱码,肯定是字符集的问题,只需要在连接时加入对应字符集信息即可。 string ConnectString = "server=localhost;Uid=root;Pwd=123456;Database=bookdb;Charset=utf8";
  • 今天使用SpringBoot 1.4.2,往Mysql数据库插入数据,发现汉字都变成了?,通过下列步骤解决了这个问题。...3.怀疑Hibernate连接字符串问题。 application.properties修改为通过utf8连接mysql,但是问
  • $arr = {"车型名称":"奥迪A6L"};...将这个json数据存入mysql数据库,就显示成了{"杞﹀瀷鍚嶇О":"濂ヨ开A6L"}这个样子,数据库字段是utf8的,php页面也声明过为utf8了,求大神告诉告诉原因!数据库字段类型是text
  • docker安装mysql后插入中文乱码问题如何解决 首先:对于刚开始接触docker的人,要明确一个概念:docker镜像包含完整的docker运行环境;可能有点不好理解,举个栗子来说:你在主机上安装了docker并拉取了一个linux...
  • 解决中文存入MySql出现乱码问题

    千次阅读 2010-06-01 09:07:00
    解决办法:在连接字符串中说明连接字符的属性,如:或者是;charset=gb2312另外注意:在创建mysql数据库的表的时候选择编码集gbk

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,334
精华内容 1,733
关键字:

存入mysql的字符乱码

mysql 订阅