mysql之字符编码问题

mysql编码分为服务端编码和客户端编码两大类
字段编码, 表编码, 数据库编码这些编码都属于服务端编码,服务端编码决定你可以存哪些字符以及这些字符要哪种规则排序.字段编码优先级最高.

你插入用什么码属于客户端编码, 你用什么客户端编码都无所谓,只要插入前加个命令set names xxx 就可以了,mysql都会给你转换,你考虑只是客户端编码和服务端编码大小集问题,是否存在映射.(比如服务端编码为GB2312, 客户端编码为BIG5, mysql肯定转换不了)
如果要正常显示字符,客户端编码xxx要和你应用程序的环境编码相同, 否则会无法正常显示(出现乱码), 这是mysql新用户最大的困扰.

问:你所说的mysql都会去转换是什么意思?比如我客户端set names ‘utf8‘,表编码为gb2312,这样是不会被正确转换的吧?

答:他会转换啊, 但如果字符无法映射, 他也转换不了, 只能用?代替或省略, 如客户端utf8中的繁体字, 是存不到编码为gb2312的字段里.
set names xxx 好比告诉mysql服务器: "我这边的编码为xxx, 请帮忙帮我转换一下编码"
所以set names xxx很重要, 你不能选错, 一定要和你应用程序的字符环境相同.

时间: 2024-08-29 18:57:53

mysql之字符编码问题的相关文章

mysql数据库字符编码修改

mysql数据库字符编码修改 修改数据库的字符集mysql>use mydb mysql>alter database mydb character set utf8; 创建数据库指定数据库的字符集 mysql>create database mydb character set utf8; 通过MySQL命令行修改: mysql> set character_set_client=utf8;Query OK, 0 rows affected (0.00 sec) mysql>

MySQL的字符编码体系(一)——数据存储编码

安装MySQL好多次了,每次都会纠结于数据库的字符编码配置,所以我决定这一次彻底把它理清. MySQL的字符编码结构比较细,它大方向分为两个部分:数据存储编码和数据传输编码.本篇讨论数据存储编码部分,数据传输编码在下一篇MySQL的字符编码体系(二)--数据传输编码中讨论. 编码层次 数据存储的字符编码配置是指定数据库中存储的数据默认采用什么字符编码.默认字符编码的设置分为四个层次:服务器级.数据库级.数据表级和列级.也就是说,可以为服务器设置一个默认字符编码,再为服务器中的每一个数据库设置不同

MySQL的字符编码体系(二)——数据传输编码

MySQL的字符编码体系可以分成两部分:一部分是关于数据库服务器本身存储数据表时如何管理字符数据的编码:另一部分是关于客户端与数据库服务器传输数据如何编码.上一篇MySQL的字符编码体系(一)--数据存储编码讨论了数据存储编码,本篇讨论数据传输编码. MySQL的客户端可以分为两种:一种就是用C语言写的官方客户端--MySQL命令程序:一种就是平常程序员使用JDBC等connector API写成的客户端.这里只讨论第一种. Windows客户端 MySQL命令程序在Windows和Linux系

Linux下修改MySQL数据库字符编码为UTF-8解决中文乱码

由于MySQL编码原因会导致数据库出现乱码. 解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码. 具体操作: 1.进入MySQL控制台 >mysql -uroot -p #输入密码进入 >status; #查看当前MySQL运行状态,如下图所示: 2.修改mysql配置文件 [[email protected] ~]# vi /etc/my.cnf #在[client]段增加下面代码 default-character-set=utf

前端网页、php与mysql数据库字符编码(解决中文等乱码问题)

web开发中经常涉及前端网页——php——mysql之间的数据交互,当数据只有英文时通常不会有什么问题,但一旦涉及中文,三个地方的某一处字符编码不一致(如,网页使用的时gbk而mysql使用utf-8)就有可能导致乱码的出现. (注:关于字符编码请参见百度百科:http://baike.baidu.com/view/1204863.htm?fr=aladdin) 前端网页编码: 通常我们都认为可以通过<head>标签内的<meta>项(如<META http-equiv=&q

修改mysql默认字符编码为utf8

MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8. 1.修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2.创建数据库时,指定数据库的字符编码 mysql> create database mydb character set utf8 ; 3.查看mysql数据库的字符编码 mysql> show variables like 'character%'; //查询

关于mysql jsp字符编码的问题解决

1.对于post表单的jsp界面,要采用与数据库统一字符编码,在页头设置 <%@ page language="java" import="java.util.*" pageEncoding="utf8"%> 2.接收request表单数据 要设定接受字符编码个格式(与数据库一致) <% request.setCharacterEncoding("utf8");//request请求获得数据的编码必须与数据库

Mysql设置字符编码及varchar宽度问题

ubuntu16.04通过仓库安装的mysql5.7的配置文件在 /etc/mysql/mysql.conf.d/mysqld.cnf 修改字符只需要 在[mysqld] character-set-server=utf8 collation-server=utf8_general_ci 然后重启 sudo service mysql start 当你设置了UTF8编码 那么varchar(4)这个4即表示最多4个英文字母,当是汉字的时候也是最多4个汉字

如何修改wampserver中mysql中字符编码的解决方案

因为我用的一般都是utf8,所以有必要改一下: 打开mysql控制台,输入密码登录之后,执行命令: show variables like '%char%'; 注意引号的中英文格式以及最后面的分号不要丢: 执行完之后会显示出Variable的名字和对应的value值: 之后打开mysql中的配置文件my.ini,找到 [client] 在其下面添加一句:default-character-set=utf8 找到[mysql] 在其下面添加和上面一样的内容: 找到[mysqld],一般是在最下面那