本来打算创建一个测试表进行一个简单的实验,发现创建完python_test表后插入数据后,select发现所有中文都变成问号了,这一看就是出现了乱码

MariaDB [lhc]> create table python_test(
-> id int(11),
-> name varchar(255),
-> class_time int(11),
-> PRIMARY KEY(id)
-> );
Query OK, 0 rows affected (0.03 sec) MariaDB [lhc]>
/*插入数据*/
INSERT INTO python_test(id,name,class_time) value(1,'字典',3);
INSERT INTO python_test(id,name,class_time) value(2,'列表',2);
INSERT INTO python_test(id,name,class_time) value(3,'函数',5);
INSERT INTO python_test(id,name,class_time) value(4,'装饰器',2);
INSERT INTO python_test(id,name,class_time) value(5,'迭代器',2);
/*查看数据*/

MariaDB [lhc]> select * from python_test;
+----+-----------+------------+
| id | name | class_time |
+----+-----------+------------+
| 1 | ?? | 3 |
| 2 | ?? | 2 |
| 3 | ?? | 5 |
| 4 | ??? | 2 |
| 5 | ??? | 2 |
+----+-----------+------------+
5 rows in set (0.00 sec)

首先查看下MariaDB的默认编码格式

MariaDB [lhc]> show variables like "character_set_%"
-> ;
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | latin1 |
| 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/ |
+--------------------------+----------------------------+

发现上面的数据库的字符编码不是为utf8

/*修改为utf8编码格式*/

MariaDB [lhc]> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec) /*查看*/
MariaDB [lhc]> show variables like "character_set_%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

查看数据还是问号,说明问题并不出现在数据库中,查看一下连接编码

MariaDB [lhc]> show variables like "collation_%";
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

可以发现问题就是出现在连接层。

解决方法

/**/
SET NAMES 'utf8';
/*
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
*/ /**/
/*创建数据库的时候指定编码格式*/
MariaDB [lhc]> create database python_test character set utf8; /**/
/*创建表的时候指定编码格式*/
MariaDB [lhc]> create table python_test(
-> id int(11),
-> name varchar(50) character set utf8,
-> class_time int(11),
-> PRIMARY KEY(id)
-> )DEFAULT CHARSET=utf8;

如果已经创建完成的表或者数据库通过ALTER进行修改

/*修改某一个数据库*/
MariaDB [lhc]> ALTER database python_test character set utf8; /*修改某一个表*/
MariaDB [lhc]> ALTER table python_test character set utf8;

再次查看原乱码表就不乱码了

MariaDB [lhc]> select * from python_test;
+----+-----------+------------+
| id | name | class_time |
+----+-----------+------------+
| 1 | 字典 | 3 |
| 2 | 列表 | 2 |
| 3 | 函数 | 5 |
| 4 | 装饰器 | 2 |
| 5 | 迭代器 | 2 |
+----+-----------+------------+

MariaDB插入中文出现???情况的更多相关文章

  1. mariadb插入中文数据乱码解决过程

    基本情况: 系统:centos 7 mariadb安装方式:yum 乱码解决过程: 查看当前数据库编码(登录数据库后) # show variables like 'character%'; (上图为 ...

  2. 解决Hibernate向MySQL数据库插入中文乱码问题

    有时候我们在用hibernate插入中文的字符会出现乱码情况,如下图所示. 看到这种情况,第一反应便是应用程序用的字符集合数据库用的字符集不统一了.我的数据库用个是mysql的,看一下建表语句.用的是 ...

  3. CentOS7下通过rpm方式安装MySQL及插入中文问题解决 [原创]

    一 CentOS下通过rpm方式安装MySQL CentOS版本:CentOS-7 MySQL版本:MySQL-5.6.22 在网上搜了一下,Linux下安装MYSQL有三种方式: 1) 通过yum命 ...

  4. Linux环境下MySQL数据库用SQL语句插入中文显示 “问号或者乱码 ” 问题解决!

    问题: 在普通用户权限下执行 mysql -u root -p进入mysql数据库,中间步骤省略,插入数据:insert into 库名(属性)values('汉字'); 会出现如下提示:  Quer ...

  5. 数据库~dotnetcore连接Mysql插入中文失败

    到目录 在dotnetcore里,连接mysql数据,插入中文时出现无法识别,并提示插入失败的情况,分析后得知它是编码问题,即数据库编码问题,你的中文在数据表里无法被识别! 解决方法(一) 进行mys ...

  6. plsqldev、oracle插入中文乱码问题解决

    最近在开发项目时用到Oracle数据库,需要手动插入一些数据,但插入中文的sql值时出现了乱码. 中文乱码就是编码不统一所导致的了,解决办法只需要把编码统一下即可解决了. 此种情况最大的可能就是客户端 ...

  7. 使用JDBC向Kudu表插入中文数据乱码(转载)

    参考:https://cloud.tencent.com/developer/article/1077763 问题描述 使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文 ...

  8. mybatis连接mysql数据库插入中文乱码

    对于MySQL数据库的乱码问题,有两种情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的 ...

  9. Mysql5.7.22版本,插入中文乱码的问题

    首先,mysql5.7.22版本的免安装版本的,需要自己配置信息,而且容易出现问题,这里还是建议下载安装版本.msi,按照安装教程进行安装:安装成功后会在数据存储的data文件下找到参数配置文件my. ...

随机推荐

  1. sql语句-6-高级查询

  2. hadoop hdfs 找不到本地库解决办法

    export LD_LIBRARY_PATH=/usr/lib/hadoop-0.20-mapreduce/lib/native/Linux-amd64-64 <-- HAOOP_HOME/li ...

  3. JS_正则表达式_验证中文字符

    正则表达式:"^[\u4e00-\u9fa5]{0,}$" . "/^[\u4E00-\u9FA5]{1,5}$/" 的含义: 在JS里,\uXXXX 是转义字 ...

  4. python基本数据类型2

    python_day_4 今日大纲: 1. list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 常用的功能: ...

  5. Qt 利用XML文档,写一个程序集合 一

    接到领导需求安排,说公司未来的硬件设备会越来越多,与每个设备对应的设备检测和设置程序也会增多.导致软甲太多,不好掌控.所以希望做一个完整的软件,但是呢,每个子程序还得独立,应为每个用户购买的设备不是一 ...

  6. Mac下布置appium环境

    1.下载或者更新Homebrew:homebrew官网 macOS 不可或缺的套件管理器 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githu ...

  7. Python中如何实现im2col和col2im函数(sliding类型)

    今天来说说im2col和col2im函数,这是MATLAB中两个内置函数,经常用于数字图像处理中.其中im2col函数在<MATLAB中的im2col函数>一文中已经进行了简单的介绍. 一 ...

  8. HPUX修改disk实例号--11.31only

    有时由于一些原因或者用户的要求,需要修改Disk的实例号,这里简单介绍如何手工进行修改. 在修改之前需要做一些准备工作,即先将stale状态的设备文件清理掉,具体步骤如下: 使用ioscan命令列出s ...

  9. eBay报告:德国或将成为外贸电商热门市场

    [亿邦动力网讯]1月3日消息,日前,跨境电商平台eBay发布公告称,自2014年1月中旬起,卖家在eBay德国 ( eBay.de ).eBay 奥地利 ( eBay.at ) 或eBay瑞士 ( e ...

  10. 团队介绍&学长采访

    1. 团队介绍 刘畅 博客园ID:森高Slontia 身份:PM 个人介绍: 弹丸粉 || 小说创作爱好者 || 撸猫狂魔 我绝对不知道,我一个写代码的怎么就当PM去了? 张安澜 博客园ID:Mins ...