Mysql (三)Mysql 编码问题

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

处理mysql 编码问题

 

我们经常会遇到一些向MySQL数据库中插入中文,但是select出来的时候,却是乱码。

 

、查看库、表字符集命令

1.查看数据库支持的所有字符集

Show  character set (show char set)

wKioL1m9zkHDt9iJAAB9UnFgQSM364.png-wh_50

 

2.查看当前状态,里面当然包括字符集的设置

Status /s

wKiom1m9znzyP5sBAABboazaVnM666.png-wh_50

 

 

 

3.查看系统字符集设置,包括所有的字符集设置

Show  variables like  ‘%char%’;

wKioL1m9zmGAMvXNAAA5k3EFZkA197.png-wh_50

wKiom1m9zpCA64ygAALCcrYV-cg330.png-wh_50


4.查看数据表中字符集设置

Show  full columns  from  tablename ;

wKiom1m9057Q7vAoAADOk-a3ZLs531.jpg-wh_50

也可以查看表结构

Show  create table  tablename\G;

wKiom1m9zreSb5v5AABvkrs91eM479.png-wh_50

5.查看数据库编码(数据库结构)

Show  create database  dbname;//创建数据库指定的字符集

wKioL1m9zpXy3CvyAAAbwJNOKuM224.png-wh_50

 

二、创建库表列时要指定字符集(要统一)

1服务器级

在安装MySQL时可以设置服务器的默认编码格式,也可对my.ini做修改,修改[mysqld]里面的character_set_server=utf8,则可设置character_set_server的值。

2.数据库级

Create  database   dbname default  character  set utf8;

wKiom1m9zs_QZYg-AAA6dvRUG3o428.png-wh_50

注意,如果不指定默认的字符集,则系统会根据character_set_database的值进行设置

3.表级

Create  table dbname.tbname(id varchar(20) not null, name vharchar(20))engine=innoDB  default  charset=utf8;

wKioL1m91H2S-jqJAADJFLl2rCA216.jpg-wh_50

:定义表的默认字符集为utf8,即使character_set_databasegbk,但是表的列都为utf8。如果没有定义表的默认字符集,则他会按照character_set_database的值来设置

 

4.列级

Create  table db1.tb2(id  varchar(20)  not null, name  varchar(20)  character set utf8);

wKiom1m9zt7DdDvSAABoblrR9gk273.png-wh_50

注:如查没有指定列字符集、就使用表字符集、如查指定了就使用指定的。

图中:show  create table db1.tb2//是查看表结构

 

三、修改字符集

1.修改character_set_connectioncharacter_set_clientcharacter_set_results三值

对于一个连接来说、可以用

Set names  utf8来使用上面三个值改成utf8;

wKioL1m9zrejI8kVAABCfVtrvX8561.png-wh_50

Set name  ‘charset_name’; 相当于

Set character_set_client = charset_name;

SET character_set_results = charset_name; 

SET character_set_connection = charset_name;

 

2.修改character_set_database字段(也就是改数据库字符集)

Alter  database db_name  default  character set  charset_name;

 

wKiom1m9zu3irdigAABG1PbfAmY829.png-wh_50

 

3.修改character_set_server字段

最简单的方法是直接改my.ini配置文件里面[mysqld]的字段,增加character-set-server=gbk,然后重启mysqld,则可改为你想要的字符集。

 

4.修改表的字符集

Alter  table tbname  default  character set  charsetname;

Alter  table tb1  default  character set  utf8

 

5.修改列的字符集

Alter  table tbname  modify  age varchar(30)  character  set utf8;

 

总结:

1、建库、建表、建字段设置统一编码。

2、PHP作为mysqle服务器客户端、连接编码set names utf8/gbk;

3、设置php返回给浏览器数据的编码。(Content-Type,header(),<meta>

<meta http-equiv="Content-Type"content="text/html; charset=gb2312" />

header("Content-type:text/html;charset=utf-8");

4、Php文件本身保存的编码(文件编码、通过文本编辑器设置)

5、安装mysql时设置好编码。(装好后可修改my.ini

 

 


本文转自 sswqzx 51CTO博客,原文链接:http://blog.51cto.com/sswqzx/1965993


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
存储 关系型数据库 MySQL
MySQL库的操作『增删改查 ‖ 编码问题 ‖ 备份与恢复』
MySQL库的操作『增删改查 ‖ 编码问题 ‖ 备份与恢复』
55 0
|
3月前
|
存储 关系型数据库 MySQL
从零开始学Mysql - 字符集和编码(下)
从零开始学Mysql - 字符集和编码(下)
109 0
|
3月前
|
存储 SQL 关系型数据库
从零开始学Mysql - 字符集和编码(上)
从零开始学Mysql - 字符集和编码(上)
140 0
|
5月前
|
关系型数据库 MySQL Linux
【Linux 下 MySQL5.7 中文编码设置】
【Linux 下 MySQL5.7 中文编码设置】
|
6月前
|
关系型数据库 MySQL 数据库
MySQL中文编码问题
MySQL中文编码问题
|
9月前
|
关系型数据库 MySQL Linux
mysql 8中utf8和utf8mb4运行时的编码警告提醒[Warning]——my.ini配置问题
mysql 8中utf8和utf8mb4运行时的编码警告提醒[Warning]——my.ini配置问题
|
9月前
|
关系型数据库 MySQL 数据库
Mac MySql - 查看以及修改编码格式
Mac MySql - 查看以及修改编码格式
86 0
|
11月前
|
SQL 存储 数据可视化
【解决方案 二】---设置mysql5.7编码集为utf8mb4
【解决方案 二】---设置mysql5.7编码集为utf8mb4
354 0
|
12月前
|
Java 关系型数据库 MySQL
本地部署Confluence遇到的问题:MySQL数据库编码、隔离级别、验证码不显示
本地部署Confluence遇到的问题:MySQL数据库编码、隔离级别、验证码不显示
239 0
|
12月前
|
存储 SQL 数据可视化
从零开始学Mysql - 字符集和编码(下)
​ 这个系列的文章是根据《MySQL是怎样运行的:从根儿上理解MySQL》这本书的个人笔记总结专栏,这里十分推荐大家精读一下这本书,也是目前市面上个人所知的讲述Mysql原理的为数不多的好书之一,好了废话不多说我们下面进入正题。
83 0

推荐镜像

更多