MySql 中文乱码问题及更改数据库表类型

本文详细介绍了如何解决MySQL数据库中的中文乱码问题,包括修改my.ini或my.conf配置文件中的字符集设置,在不同操作系统(如Windows、Ubuntu、SUSE)下的具体步骤,创建数据库时指定字符集,以及调整应用程序连接字符串。
MySql 中文乱码问题:

在MySql安装目录下找到my.ini文件,将文件里的default-character-set=xxxx全部改为=你要的编码格式,(gbk,utf8,gb2312)等. 保存退出!

打开mysql client,进入后再输入show variables like "%char%";可查看更改字符集后的列表.如:

+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+

如果之前已经安装有数据库或表的话,请备份好删除后重建新的库与表.在新建库里最好是这样建:

create database mywebspace default character set utf8;(即刚在my.ini里改的字符集)

建表时也要加上create table tablename(......);ENGINE=InnoDB DEFAULT CHARSET=utf8;

程序里的连接语句改为jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8

此时应该可以解决乱码的问题.但可能在mysql client里输入一条insert语句时会报Data too long for column这样的错而在程序里则成功插入的情况,用select语句查看是有数据的.这问题不清楚,待解决!

也有时用工具查看的时候会发现有乱码的,这个情况是由于你的工具不支持或其它原因,推荐用Navicat mysql.

======================================

在ubuntu下:
请在修改/etc/mysql/my.conf文件,添加

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
#添加以下行,确定编码
default-character-set = utf8

[mysqld]
#添加以下行,确定编码
default-character-set = utf8


均在[client]及[mysqld]下添加default-character-set = utf8 ,

另,ubuntu安装的mysql数据库的数据表类型是myisam的,如果你要更改为InnoDB为默认的话也在[mysqld]下再添加一行

[mysqld]
#指定数据库表类型
default-storage-engine=INNODB


如果要查看数据库是否支持该表类型的话,可以先用show engines;来查看一下的。

======================================

在suse下:
同ubuntu里的操作方法一样,只是打开my.conf文件的路径为:suse#~vi /etc/my.cnf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值