网站建设资讯

NEWS

网站建设资讯

mysql编码怎么样 mysql编码方式

mysql应该用什么编码格式储存在数据库里呢?

mysql中一般用UTF-8编码。

10年积累的成都网站建设、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有海北州免费网站建设让你可以放心的选择与我们合作。

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

修改数据库编码的命令为:

alter database app_relation character set utf8;

它相当于下面的三句指令:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

关于mysql编码,utf8为什么会这么浪费空间

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes

4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

二、内容描述

那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8

编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是

0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用

Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android

手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等。

三、问题根源

最初的 UTF-8 格式使用一至六个字节,最大能编码 31 位字符。最新的 UTF-8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。

utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 中的基本多文本平面。

Mysql 中的 utf8 为什么只支持持最长三个字节的 UTF-8字符呢?我想了一下,可能是因为 Mysql

刚开始开发那会,Unicode 还没有辅助平面这一说呢。那时候,Unicode 委员会还做着 “65535

个字符足够全世界用了”的美梦。Mysql 中的字符串长度算的是字符数而非字节数,对于 CHAR 数据类型来说,需要为字符串保留足够的长。当使用

怎么查看mysql默认编码格式

查看MySQL编码

SHOW VARIABLES LIKE 'char%';

因为当初安装时指定了字符集为UTF8,所以所有的编码都是UTF8。

character_set_client:你发送的数据必须与client指定的编码一致!!!服务器会使用该编码来解读客户端发送过来的数据;

character_set_connection:通过该编码与client一致!该编码不会导致乱码!当执行的是查询语句时,客户端发送过来的数据会先转换成connection指定的编码。但只要客户端发送过来的数据与client指定的编码一致,那么转换就不会出现问题;

character_set_database:数据库默认编码,在创建数据库时,如果没有指定编码,那么默认使用database编码;

character_set_server:MySQL服务器默认编码;

character_set_results:响应的编码,即查询结果返回给客户端的编码。这说明客户端必须使用result指定的编码来解码;

控制台编码

修改character_set_client、character_set_results、character_set_connection为GBK,就不会出现乱码了。但其实只需要修改character_set_client和character_set_results。

控制台的编码只能是GBK,而不能修改为UTF8,这就出现一个问题。客户端发送的数据是GBK,而character_set_client为UTF8,这就说明客户端数据到了服务器端后一定会出现乱码。既然不能修改控制台的编码,那么只能修改character_set_client为GBK了。

服务器发送给客户端的数据编码为character_set_result,它如果是UTF8,那么控制台使用GBK解码也一定会出现乱码。因为无法修改控制台编码,所以只能把character_set_result修改为GBK。

修改character_set_client变量:set character_set_client=gbk;

修改character_set_results变量:set character_set_results=gbk;

设置编码只对当前连接有效,这说明每次登录MySQL提示符后都要去修改这两个编码,但可以通过修改配置文件来处理这一问题:配置文件路径:D:\Program Files\MySQL\MySQL Server 5.1\ my.ini

mysql 编码问题

让MYSQL支持GBK

在 mysql数据库中,使用的是latin字符集,所以无法正常的支持中文字符,中文在数据库中显示为乱码“?”号。为了让mysql可以正常使用中文,尤其是当使用jsp连接mysql的时候,我们需要使用gbk的字符集,因此我们要对mysql进行以下设置,以便其有效的支持中文:

1.修改my.cnf文件

my.cnf文件是mysql的配置文件,我们可以从mysql的安装目录根据其自带模板来

建立

#cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf

#vi /etc/my.cnf

在此文件中相应位置加入

default-character-set = gbk

########################

[client]

default-character-set = gbk

[mysqld]

default-character-set = gbk

#########################

修改结束以后,保存,然后使用客户端登录

#mysql -u root -p

在客户端中输入

status;

显示的数据中如果出现:

Server characterset: gbk

Db characterset: gbk

Client characterset: gbk

Conn. characterset: gbk

则表示修改成功。

2.建立库表时指定gbk字符集

在建立库表的时候我们需要指定gbk字符集

建立数据库:

CREATE DATABASE dbname DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci

建立数据表

Create table tablename(

id int(10) unsigned NOT NULL AUTO_INCREMENT,

name varchar(15) NOT NULL default '',

PRIMARY KEY (id)

) TYPE=MyISAM DEFAULT CHARACTER SET gbk

建立好以后,在客户端中使用:

show cereate table tablename;

如果最后一行显示gbk,则表示成功

3.修改jdbc驱动

jsp连接mysql需要使用jdbc驱动,在使用的时候,我们需要设置好字符集

String user="root";

String password="123";

String url="jdbc:mysql://localhost:3306/dbname?useUnicode=truecharacterEncoding=gbk"

Class.forNname("com.mysql.jdbc.Driver");//装载驱动类;

Connection con=DriverManager.getConnection(url,user,password);//取得连接

其中dbname为你数据库的名字,url中的gbk即为使用的字符集

做好以上三步以后,mysql就可以支持gbk中文了。

MYSQL 编码问题

数据库里的编码没有问题,uft8_general_ci就可以了,在脚本里别忘了执行mysql_query('set names utf8'),关键你要把你的文件保存为UTF-8格式,使用EditPlus或者UE编辑器来另存为,提示框会有保存的编码选项。


网站题目:mysql编码怎么样 mysql编码方式
链接地址:http://cdweb.net/article/hgdseg.html