本文共 1858 字,大约阅读时间需要 6 分钟。
MySQL 的字符集和编码设置是一个容易引起问题但也很重要的配置问题。作为一个从 Oracle 转向 MySQL 的新手,我在这个过程中遇到了一些挑战,希望能通过自己的学习和实践总结出一些实用的解决方案。
MySQL 的配置文件在不同操作系统下有不同的位置。例如,Windows 系统下通常位于系统目录或 MySQL 安装目录下,文件名为 my.ini;Linux 下则一般位于 /etc/my.cnf。
在 [mysqld] 标签下添加以下三行:
default-character-set = utf8character_set_server = utf8lower_case_table_names = 1
在 [mysql] 标签下添加:
default-character-set = utf8
在 [mysql.server] 标签下添加:
default-character-set = utf8
在 [mysqld_safe] 标签下添加:
default-character-set = utf8
在 [client] 标签下添加:
default-character-set = utf8
在 Windows 系统上,可以通过服务管理器重启服务。命令行下使用:
net stop mysqlnet start mysql
Linux 用户可以使用:
service mysql restart
如果启动失败,请检查配置文件是否有误。
登录命令行客户端:
mysql -uroot -p
输入密码后执行:
SHOW VARIABLES LIKE "%char%";
期望看到类似以下结果:
| 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 | /usr/share/mysql/charsets/ |
在创建数据库时,确保设置为 UTF-8 编码:
create database name default character set utf8;
创建表时,指定字符集:
CREATE TABLE `type` ( `id` int(10) unsigned NOT NULL auto_increment, `flag_deleted` enum('Y','N') character set utf8 NOT NULL default 'N', `flag_type` int(5) NOT NULL default '0', `type_name` varchar(50) character set utf8 NOT NULL default '', PRIMARY KEY (`id`)) DEFAULT CHARSET=utf8;
修改现有数据库:
alter database name character set utf8;
修改表默认字符集:
alter table type character set utf8;
修改字段字符集:
alter table type modify type_name varchar(50) CHARACTER SET utf8;
create database `test` default character set utf8;
use test;set names utf8;source test.sql;
jdbc:mysql://127.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
通过以上方法,可以有效解决 MySQL 编码问题。遇到具体问题时,可以参考上述步骤或查阅 MySQL 官方文档。
转载地址:http://indfk.baihongyu.com/