All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
使用ASP.NET,AJAX框架扩展HTML,Map控件_[Asp.Net教程]
PHP实例:生成静态页面的函数_[PHP教程]
ASP.NET与Javascript代码结合实现一种常用效果_[Asp.Net教程]
用PHP读取和编写XML DOM_[PHP教程]
正确理解PHP程序编译时的错误信息_php资料_编程技术
XML的站内全文检索解决方案_[XML教程]
Apache Web 服务器的完全安装指南_[PHP教程]
ASP.NET中连接MYSQL_[Asp.Net教程]
Web.Config配置节加密和解密_[Asp.Net教程]
教程:使用WebService进行异步通信_.net资料_编程技术
Reading number is top 10 pictures
Absolutely shocked. National geographic 50 animal photographys4
The money of more than 100 countries and regions3
Distribution of wealth in China survey status report
Sora aoi on twitter3
猫眯也疯狂
中国处女图鉴2
The beginning and end
China's first snake village2
毛俊杰-能量永动机
可爱的小动物
Download software ranking
Tram sex maniac 2 (H) rar bag6
都市狐狸姑娘传
Tram sex maniac 2 (H) rar bag14
Tram sex maniac 2 (H) rar bag4
Boxer's Top ten classic battle4
Boxer vs Yellow5
徐若瑄成名作“魔鬼天使”
I'm come from Beijing1
Ashlynn Video2
Unix video tutorial13
aaa published in(发表于) 2013/12/27 20:04:14 Edit(编辑)
学习PHP:详解mysql4.0以后的编码配置_php资料_编程技术

学习PHP:详解mysql4.0以后的编码配置_php资料_编程技术

学习PHP:详解mysql4.0以后的编码配置_php资料_编程技术-你的首页-uuhomepage.com

简要说一下mysql4.1以后的问题
第一:mysql4.1的存储方式已经是utf8的了。。也就是说他的文件编码是utf8格式,我们不需要担心会有存储不了的字符
第二:mysql服务器需要以一种编码方式来启动,设定连接(通讯)过来的字符编码是什么,就是所谓的我们的交流语言
第三:mysql的client端,需要设定一种编码去和mysql的服务器端通讯,也是交流语言

那么为什么回出现乱码哪?
就是出在这个连接的过程中,试想一个人用英文和你说话,而你只明白中文,真的和小燕子一样,三块肉喂了马吃了。。

那么如何解决乱码的问题哪?
有几个办法:
第一,服务器端mysql和客户端mysql编译时候用相同的charset
./configure --with-extra-charsets=big5,gbk,gb2312,utf8 --with-charset=utf8
其中--with-charset=utf8就是设定服务器或者客户端的默认连接方式中的编码,当然你可以用各种编码,只要统一就可以。
(我感觉这个是吓唬人的,因为就算你用--with-charset=gbk,在日文或者其他文字中也不会出现乱码)
第二,在编译后进行设置,这个也有两种方式,读配置文件,或者直接加参数
先说直接加参数的方式:
以下是我用的一个服务器脚本,用来启动mysql

CODE:
#!/bin/sh
rundir=`dirname "$0"`
echo "$rundir"
/usr/local/soft/mysql4112/bin/mysqld_safe --user=mysql --pid-file="$rundir"/mysql.pid --datadir="$rundir"/var "$@"\-O max_connection
s=500 -O wait_timeout=60 -O key_buffer=32M --port=6000 --socket="$rundir"/mysql.sock --default-character-set=utf8 &


其中可以看到服务器启动的连接编码为utf8,当然你可以用别的方式比如gbk
客户端那更容易了
/$mysqlpath/bin/mysql -hxxxx -uxxx -pxxx -P6000 --default-character-set=utf8
呵呵,然后你在mysql中看到mysql>show variables;
| 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_set_system | utf8 这个是系统的文件编码,所有的都是utf8
| character_set_database | utf8 这个就是我们服务器的启动的时候设置的编码
其他几项是客户端的连接编码

然后说通过my.cnf设置的方法,这个也分服务器和客户端的方式
编译的时候我们可以通过--sysconfdir=/etc的方式设置my.cnf的读取目录

my.cnf的配置,cnf在client端和server端的设置是一样的,位置不同
以下是client端my.cnf一脚

CODE:
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8


看一下就明白了,服务器端同理,不过是在[mysqld]下。

ps:my.cnf的位置是个问题,如果编译的时候不设置sysconfdir的话,默认是在mysql的安装目录下的etc下面,这个目录需要你自己建一个,使用client端连接既可以读取。
php有个问题,他的mysql连接不会读取mysql目录下的,而是读取/etc的根目录中的配置文件,不知道是不是个bug

ps:如何找到适合我自己的my.cnf文件那,这个是在mysql安装目录下的share/mysql/中,其中有
my-small.cnf
my-medium.cnf
my-large.cnf
my-huge.cnf
my-innodb-heavy-4G.cnf
分别对应数据库的大小设置相应的配置文件,这些设置的不同只对server端起作用。





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.