mysql数据库怎么支持中文

mysql数据库怎么支持中文,第1张

1,创建table的时候就使用utf8编码

举个例子:

在每次创建表的时候都在最后加上 character set = utf8 就可以很好的支持中文

2,修改已经有的table的编码

当使用默认编码创建了一个table的时候,是不能支持中文的,这时候使用如下语句对table_name进行修改:

此后再往这个table插入中文的时候,就可以正常存储和读取了,但不知道为什么之前的乱码还是不能纠正,只能新插入的数据没有问题。

[注意] 我google了一下,有些地方说这个命令也行,但是我测试以后并不行

alter table table_name charset=utf8 #这个语句并没有让table_name支持中文

分析原因:这是因为之前修改了数据库的编码,但数据表的编码却没有跟着改变导致的。

安装mysql 时,使用的是latin编码(随后修改为utf8)。建的数据表是在latin编码下建立的。而jsp页面使用的是utf8,所以无法插入数据。。。

1.修改mysql数据库编码

修改MySQL安装目录下的my.ini文件

default-character-set=utf8

character-set-server=utf8

然后重启MySQL服务,MySQL 没有重启的命令,要先停止,然后再启动。

这样就确保了,mysql中的编码类型

用show variables like 'char%'或status命令 查看得到如下:

红色方框应改为gb2312编码,否则在dos下显示中文乱码。

2.解决方法

设置表的编码格式,执行alter table 数据表名 CONVERT TO CHARACTER SET utf8命令

“使用命令行方式登陆到MySQL服务器, 建立一个数据库,数据库编码设为UTF-8。此时,如果直接在命令行窗口使用insert语句插入中文,就遇到类似 ERROR 1406 (22001): Data too long for column 'name' at row 1 错误。乍一看,是字段长度引起的问题,但是实际是字符编码的问题。可是尝试以下解决方法:

1、在Linux中,使用终端方式登陆MySQL服务器,运行以下命令:

set names utf8

该命令将终端的字符编码设为了UTF-8。此后再插入数据库中的内容都会按照UTF-8的编码来处理。

注意:在Linux中,终端方式中直接插入中文内容,可能并不会出现1406错误,但是这时插入的数据

是按照系统的默认编码进行处理。因此对编码为UTF-8的数据库,在显示数据的地方可能会出现乱码。

2、在Windows下,命令行窗口不支持UTF-8编码,所以使用“set names utf8”不会达到转化中文的

效果。但是这个问题还是可以解决的:

(1)使用默认编码建立数据库。这种情况下就可以直接输入中文了,但是相应的问题,就是会

失去UTF-8编码的灵活性。特别是不利于软件的国际化。

(2)放弃命令行窗口登录MySQL,使用图形化客户端。客户端工具可以MySQL的官方网站上找到。”

B. Mysql配置文件:

“在my.ini里找到sql- mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'把其中 的STRICT_TRANS_TABLES,去掉,或者把sql- mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION注释掉,然 后重启mysql就ok了”


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9251946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存