PHP编程:进修PHP:详解mysql4.0今后的编码设置装备摆设
因为函数实在是太多了,慢慢的你就会知道,知道有这个函数就可以。 扼要说一下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:
#password = your_password
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8
看一下就分明了,办事器端同理,不外是在下。
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端起感化。
不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。 php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的 本文当是我的笔记啦,遇到的问题随时填充 写的比较杂,因为我也是个新手,不当至于大家多多指正。 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
页:
[1]