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

阅读更多
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

你可能感兴趣的:(MySQL,Ubuntu,SuSE,Socket,JDBC)