让你的MySQL数据库彻底与中文联姻

系统自带的MySQL默认字符集不是gbk,因此给数据库的推广应用以及中文程序的开发带来极大的不便,在没完没了的GBK和UTF8的转换过程中消耗了我们无数的精力以及系统的资源。经过摸索尝试解决了中文支持问题,经验与大家分享一下。

先将让slack支持中文,方法可以看“linuxsir.org 之Slackware讨论区”,然后重新编译MySQL,原来系统MySQL的要先用卸载。

 

以下为引用的内容:
login:root
shell> removepkg mysql
shell> groupadd mysql
shell> cd /app
shell> mkdir mysql
shell> chmod 744 mysql
shell> useradd -G mysql -s /bin/bash –p /app/mysql mysql
shell> chown -R mysql.mysql mysql
下载MySQL4.x.x:
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> CFLAGS="-O3 -mcpu=pentium3" \
CXX=gcc \
XXFLAGS="-O3 -mcpu=pentium3 -felide-constructors" \
./configure --prefix=/app/mysql \
--with--charset=gbk \
--with-extra-charsets="gbk gb2312 big5 utf8"\
--with-unix-socket-path=/etc/mysql.sock \
--enable-local-infile \
--enable-thread-safe-client \
--enable-assembler \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static

//-mcpu 根据CPU类型优化编译,可以让你的MySQL表现更好!
可选项目很多:i386, i486, i586, i686, pentium,
pentium-mmx, pentiumpro, pentium2, pentium3, pentium4,
k6, k6-2, k6-3, athlon, athlon-tbird, athlon-4,
athlon-xp,athlon-mp,winchip-c6, winchip2 , c3

shell> make
------------------------------------------
错误时候
shell> make clean
再回上一步
---------------------------------------
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /app/mysql
shell> bin/mysql_install_db --user=root
shell> chown -R root .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> ./bin/mysqld_safe --user=root
--default-character-set=gbk &
shell> ./bin/mysqladmin -u root password 'new-password'
shell> ./bin/mysql -u root --default-character-set=gbk -p
mysql> status
...
Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
....
看见characterset全是gbk就算成功了。

在UTF8字符集的老数据库中,创建中文支持表脚本如下,对字段加上字符集说明:

CREATE TABLE `test`.`cn` (
`zh` CHAR(10) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL,
`中文` INT(11) NOT NULL
)
ENGINE = MYISAM;

注:CHARACTER SET 写GB2312 和gbk都可以,gbk优于gb2312。

对于新创建的数据库加个默认字符集声明GBK,就不用建表时候每个字段声明了,这样看起来简单流畅,没有特殊的痕迹,建议多采用这种方法。

mysql> CREATE DATABASE dbCN DEFAULT CHARACTER SET
gbk COLLATE gbk_chinese_ci;
CREATE TABLE `dbCN`.`cn` (
`zh` CHAR(10) NOT NULL,
`中文` INT(11) NOT NULL
)
ENGINE = MYISAM;
mysql> insert into cn values("真的?",1);

注:如果这些脚本用bin/MySQL命令行是输入不了,可以用MySQL query Browser,或者编程执行。

----------------------------------------------
shell> bin/mysql -u root --default-character-set=gbk -p
mysql>use test
mysql> select * from cn;
+--------+------+
| zh | 中文 |
+--------+------+
| 真的?| 1 |
+--------+------+
1 row in set (0.00 sec)
---------------------------------------------

最后修改启动文件/etc/rc.d/rc.mysqld,改路径/app/mysql/bin/mysqld_safe,改路径/app/mysql/var/web.pid/app/mysql/bin/mysqld_safe 后面加入 --user=root --default-character-set=gbk。

时间: 2024-10-28 14:29:37

让你的MySQL数据库彻底与中文联姻的相关文章

c#-C#操作mysql数据库 不支持中文查询

问题描述 C#操作mysql数据库 不支持中文查询 例如 select * from testdata where name='张2Q' 在navicat里面运行很正常 ,结果很正确 但是在C#里面执行,死活没有结果.如果换成select * from testdata where name='ss' 这两个的结果都对,这是为什么呀?找来找去发现就是因为C#查询的时候不支持中文,怎么解决呀?大神们帮帮忙. 解决方案 统一用utf8等编码试试. 解决方案二: C#查询支持中文的,你看看是不是你数据

急救:jsp向mysql数据库中插入中文数据时是乱码

问题描述 mysql当初安装的时候采用的编码是utf-8我建立的数据库编码是gbk_chinese_ciJSP文件:<%@pagelanguage="java"contentType="text/html;charset=GBK"%><html><head><title>编码问题</title><metahttp-equiv="Content-Type"content="

php取MYSQL数据库中的中文数据时乱码

在网上找了一些资料,都是一堆费话,实现就下面一句就可以了.其它方法目前不知道. $charset=''gbd''; $conn=数据库链接; @mysql_query("SET NAMES ".$charset."",$conn);  

编码-php插入到mysql数据库中文乱码,数据库中的中文可以正常显示

问题描述 php插入到mysql数据库中文乱码,数据库中的中文可以正常显示 PHP获取HTML的POST内容到数据库,插入以后显示乱码,我数据库编码已经设置成UTF8了,然后插入之前我ECHO出来也不是乱码,但是到数据库里面就成乱码了,不知道为什么呢,问之前我已经搜索过了,说要先执行 mysql_query("SET NAMES 'uft8'",$link); 这样,我这样执行以后然后刷新还是一样 解决方案 http://www.111cn.net/phper/31/59059.htm

php mysql 数据库类

class mySqlClass {//定义整个数据库访问类 mySqlClass var $querynum = 0;//查询次数变量   //打开服务器的连接------------------------------------------------------------------------------------------------------//   function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconn

MFC连接MySQL数据库时编辑框出现中文乱码

环境:Visual Studio 2010 + MySQL Server 5.1 + Navicat for Mysql 8.2 问题:MFC连接MySQL 数据库,编辑框出现中文乱码. 解决: 使用MySQL C API,在连接上数据库查询数据前加上 如下代码: mysql_query(&m_sqlCon,"SET NAMES 'GB2312'"); //m_sqlCon是MYSQL类型 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www

实例讲解MySQL数据库中文问题的解决方法

MySQL数据库中文问题的解决方法: 1.my.ini MySQL配置文件设置 [client] default-character-set=gbk [mysqld] default-character-set=gbk 2.启动MySQL服务创建你的数据库 3.验证当前编码 命令行输入: mysql -u root -p 登录你建立的数据库 >connect yourdatabasename 输入数据库状态命令 >status 假如结果如下: Server characterset: gbk

y 中文乱码-PHP环语言对MySQL数据库进行中文字段的数据插入和查询时候遇到的乱码问题

问题描述 PHP环语言对MySQL数据库进行中文字段的数据插入和查询时候遇到的乱码问题 #定义插入数据库的时候定义插入的字符串的编码为 mysql_query('SET NAMES UTF8'); 这时候通过PhpMyadmin能够正常看到插入的正文字段信息,但是通过 mysql_query("select * from $table_name limit $offset,$rows"); 查询该字段的时候,显示的字段信息是乱码 如果不对插入数据库的编码做任何的定义,直接插入数据库中文

【技术贴】java插入mysql中文乱码解决|java插入mysql数据库显示问号?

[技术贴]java插入mysql中文乱码解决|java插入mysql数据库显示问号?   在你要连接到mysql 的代码里写上?useUnicode=true&characterEncoding=UTF-8" 比如 "jdbc:mysql://localhost:3306/chenluancl1?useUnicode=true&characterEncoding=UTF-8", "root","密码"