首页 > 数据库 >Mysql - Mysql设置字符编码和修改字符编码(数据库,表,字段)

Mysql - Mysql设置字符编码和修改字符编码(数据库,表,字段)

时间:2023-02-22 12:08:41浏览次数:45  
标签:编码 set latin1 字符 utf8 mysql character Mysql name


MySQL 的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。

查看系统的字符集和排序方式的设定可以通过下面的两条命令或mysql> status 。

mysql> SHOW VARIABLES LIKE 'character_set_%'; 
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)

mysql> 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)
上面列出的值就是系统的默认值。(很奇怪系统怎么默认是latin1的瑞典语排序方式)... 

当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
  1. SET NAMES ‘utf8’;
    它相当于下面的三句指令:
SET character_set_client = utf8; 
SET character_set_results = utf8;
SET character_set_connection = utf8;
  1. 创建数据库
mysql> create database name character set utf8;
  1. 创建表
CREATE TABLE `type` ( 
`id` int(10) unsigned NOT NULL auto_increment,
`flag_deleted` enum('Y','N') character set utf8 NOT NULL default 'N',
`flag_type` int(5) NOT NULL default '0',
`type_name` varchar(50) character set utf8 NOT NULL default '',
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
  1. 修改数据库成utf8的.
mysql> alter database name character set utf8;
  1. 修改表默认用utf8.
mysql> alter table type character set utf8;
  1. 修改字段用utf8
mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;


标签:编码,set,latin1,字符,utf8,mysql,character,Mysql,name
From: https://blog.51cto.com/u_15976424/6078822

相关文章

  • SOAP错误:错误代码:VersionMismatch,错误字符串:错误版本
    几经查找原因原来只需要把:<?xmlversion="1.0"encoding="utf-8"?><soap12:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.......
  • 0x05_My-OS显示字符串和任意参数
    先看看效果: 要解决两个问题,第一个如何显示字符串,printf?我之前已经说了所有的头文件都要自己写,printf是stdio里的可是我们没有stdio我们要通过画像素点的方式显示字符......
  • mysql delete删除记录数据库空间不减少问题 2 种解决方法(转)
    转自:详解mysqldelete删除记录数据库空间不减少问题三种解决方法1、使用OPTIMIZE命令optimizetableact_demo_test;注意:在OPTIMIZETABLE运行过程中,MySQL会锁定表。......
  • iOS Swift开发中JSON对象/JSON字符串/Data的互转
    https://www.jianshu.com/p/712bb9a60184 JSON(对象)----->JSON字符串//JSON--->data--->JSON字符串letdata=try?JSONSerialization.data(withJSONObject:json......
  • Mysql关联删除CSV中的相关数据
    问题描述:提供一个csv文件,记录的是一些不同数据库的不同表中的共同字段account_id数据,需要在A库的account表中做关联删除 解决思路:csv文件中储存的都是account_id,六位纯......
  • MySQL查询(一)
    MySQL查询(一)1.基础查询SELECT查询列表FROM表名;查询列表:可以是表中的字段、常量值、表达式、函数查询结果是一个虚拟的表格,并没有保存下来查询表中的......
  • 寻找字符串数组中的最长前缀
    //编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。  Java:classSolution{publicStringlongestCommonPrefix(String[]s......
  • pymysql通过DBUtils实现连接池技术
    DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。一、安装pipinstallDBUtils二、导入模块#针对不同版本,可能导入方式存......
  • MySQL8.0 0 安装后,使用CMD无法启动mysql服务
    首先,先把mysql的bin路径添加到系统环境变量     第一步:在MySQL的安装文件的bin目录   例如: D:\mysql\bin   中新建一个my.ini的文件,复制进代码[my......
  • mysql之半同步
    ##################安装半同步插件:mysql>installpluginrpl_semi_sync_mastersoname'semisync_master.so';mysql>installpluginrpl_semi_sync_slavesoname'semi......