Thank you for reading...
2007/07/06 09:00
很早以前,我还没使用过UTF-8做过站时,查看donews的Blog源代码,发现代码中的中文全是乱码。。。还以为本来就是这样。用记事本打开是乱码,用UltraEdit打开不会。
最近都是用UTF-8编码做站,偶尔查看源代码发现,页面的代码都能正常显示中文。但有一次更新后会发现源代码中的中文全是乱码。后来检查发现,是因为更新了其包含的文件,而这个包含文件没有进行转码导致的。
在UltraEdit中,页面默认不是UTF-8的,需要使用"转换->ASCII转UTF-8"后才是UTF-8编码。此时查看源代码是能显示中文的。如果此文件包含了一个没有进行此转换的且有中文字的页面,则查看源代码时,就是乱码,而移到包含的文件那块,中文是能够正常显示的。
因此,在使用UTF-8做站时,一定要小心,最好习惯的性的记得转换,反正多转换几次也不会出错:)
最近都是用UTF-8编码做站,偶尔查看源代码发现,页面的代码都能正常显示中文。但有一次更新后会发现源代码中的中文全是乱码。后来检查发现,是因为更新了其包含的文件,而这个包含文件没有进行转码导致的。
在UltraEdit中,页面默认不是UTF-8的,需要使用"转换->ASCII转UTF-8"后才是UTF-8编码。此时查看源代码是能显示中文的。如果此文件包含了一个没有进行此转换的且有中文字的页面,则查看源代码时,就是乱码,而移到包含的文件那块,中文是能够正常显示的。
因此,在使用UTF-8做站时,一定要小心,最好习惯的性的记得转换,反正多转换几次也不会出错:)
2007/06/05 20:02
上次提到UTF-8编码站直接调用Baidu搜索的问题,后面加上&ie=utf-8解决了,但是其是怎么处理的呢?
今天,为了要实现某功能,需要用到这个功能。想想用iconv试试,测试写了下,发现原来实现很简单:)
<?
$ie = $_GET['ie'];
$word = $_GET['word'];
if($ie == 'utf-8') $word = iconv($ie,'gb2312',$word);
echo $word;
?>
查了下,iconv (PHP 4 >= 4.0.5, PHP 5) -- Convert string to requested character encoding,只要php大于4.0.5就都可以用了。
哈,这样就可以把UTF-8页面传递过来的编码后的中文字处理成gb2312的中文字了:)
今天,为了要实现某功能,需要用到这个功能。想想用iconv试试,测试写了下,发现原来实现很简单:)
<?
$ie = $_GET['ie'];
$word = $_GET['word'];
if($ie == 'utf-8') $word = iconv($ie,'gb2312',$word);
echo $word;
?>
查了下,iconv (PHP 4 >= 4.0.5, PHP 5) -- Convert string to requested character encoding,只要php大于4.0.5就都可以用了。
哈,这样就可以把UTF-8页面传递过来的编码后的中文字处理成gb2312的中文字了:)
2007/06/05 16:58
从网上下了一个数据,其sql的内容是gb2312的。自己建了个UTF8的数据库,将sql文本转为UTF-8。用phpmyadmin导指示太大了,就去命令行导入,
mysql -u root -p --default-character-set=utf8 < f:/mobile_utf8.sql
导入后发现是乱码。
测试直接copy语句去phpmyadmin执行后插入的中文能正常显示。
想想导入时有编码的选项,
mysql --help查看了一下帮助,看到有--default-character-set=name(set the default character set)的选项,于是加一下,
mysql -u root -p --default-character-set=utf8 < f:/mobile_utf8.sql
浏览内容,中文正常显示。
后来想想,其实可以创建一个默认的数据库,导入数据库,通过phpmyadmin,调整数据库的编码选项就可以了。
--------------------------------------------------------------------------
第二天发现,很奇怪,虽然导入的中文在phpmyadmin中是正常显示的,但用程序输出时确是乱码。后来将没有转成utf-8的sql语句重新导一边,这回在phpmyadmin中中文显示不正常,但在程序输出时页面上显示的确是正确的中文。暂不清楚是什么原因。
mysql -u root -p --default-character-set=utf8 < f:/mobile_utf8.sql
导入后发现是乱码。
测试直接copy语句去phpmyadmin执行后插入的中文能正常显示。
想想导入时有编码的选项,
mysql --help查看了一下帮助,看到有--default-character-set=name(set the default character set)的选项,于是加一下,
mysql -u root -p --default-character-set=utf8 < f:/mobile_utf8.sql
浏览内容,中文正常显示。
后来想想,其实可以创建一个默认的数据库,导入数据库,通过phpmyadmin,调整数据库的编码选项就可以了。
--------------------------------------------------------------------------
第二天发现,很奇怪,虽然导入的中文在phpmyadmin中是正常显示的,但用程序输出时确是乱码。后来将没有转成utf-8的sql语句重新导一边,这回在phpmyadmin中中文显示不正常,但在程序输出时页面上显示的确是正确的中文。暂不清楚是什么原因。
2007/05/23 11:05
一个UTF-8编码的站点,在页面中需要有如下的链接:
查看更多关于"给不起的爱"的内容,关键词“给不起的爱”链接
http://www.baidu.com/baidu?word=给不起的爱
但是,点过去后搜索框显示的关键词是乱码:(
如果直接在地址栏输这个网址,确又正常。
将中文rawurlencode一下,变成
http://www.baidu.com/baidu?word=%E7%BB%99%E4%B8%8D%E8%B5%B7%E7%9A%84%E7%88%B1
同样如此。
知道这是因为UTF-8下一个中文三个字符,而Baidu使用GB2312编码,一个中文两个字符的原因,但是怎么解决呢?Google就可以直接调用,因为其本身就是UTF8的,如果是gb2312的页面过去,则只要在网址后面加上&ie=GB2312就可以。Baidu不知道要怎么解决,难道要将UTF-8产生的字符通过函数转换为gb2312的编码?在Baidu的帮助中没能找到方法。
搜索了一下,从一大堆无用信息中找到了一条,解决了这个问题:)
方法是在后面加上&ie=utf-8,呵呵Baidu也早就有解决这个问题的方法了。
于是最终链接地址变成:
http://www.baidu.com/baidu?word=%E7%BB%99%E4%B8%8D%E8%B5%B7%E7%9A%84%E7%88%B1&ie=utf-8
查看更多关于"给不起的爱"的内容,关键词“给不起的爱”链接
http://www.baidu.com/baidu?word=给不起的爱
但是,点过去后搜索框显示的关键词是乱码:(
如果直接在地址栏输这个网址,确又正常。
将中文rawurlencode一下,变成
http://www.baidu.com/baidu?word=%E7%BB%99%E4%B8%8D%E8%B5%B7%E7%9A%84%E7%88%B1
同样如此。
知道这是因为UTF-8下一个中文三个字符,而Baidu使用GB2312编码,一个中文两个字符的原因,但是怎么解决呢?Google就可以直接调用,因为其本身就是UTF8的,如果是gb2312的页面过去,则只要在网址后面加上&ie=GB2312就可以。Baidu不知道要怎么解决,难道要将UTF-8产生的字符通过函数转换为gb2312的编码?在Baidu的帮助中没能找到方法。
搜索了一下,从一大堆无用信息中找到了一条,解决了这个问题:)
方法是在后面加上&ie=utf-8,呵呵Baidu也早就有解决这个问题的方法了。
于是最终链接地址变成:
http://www.baidu.com/baidu?word=%E7%BB%99%E4%B8%8D%E8%B5%B7%E7%9A%84%E7%88%B1&ie=utf-8
2007/04/30 21:08
服务器上上了一个GBK的discuz,但是发现出来是乱码。查看一下编码,始终默认为UTF-8,手功选择为GB2312后,刷新一下或者点到其它页面,又变成UTF8了:(
检查页面代码,<meta http-equiv="Content-Type" content="text/html;charset=gbk">这句话已经放在最上面了,在所有中文字符之前,没有问题!开始怀疑是服务器配置问题。
检查apache2/conf/httpd.conf,没有发现强制UTF8的设置,也没有发现默认字符的设置。于是从其它机子的httpd.conf中Copy来了AddDefaultCharset GB2312,加了,还是不行。。。,快19点了,先回家再说。
回到家里发现,服务器上一个UTF-8的站首页乱码了。。。,赶紧在全局设置中把AddDefaultCharset GB2312去掉,想想把这句就加在那个GBK的站点配置里吧。
现在,那个GBK的站点访问还是乱码,建了一个test.htm,头部gbk,可以正常显示中文,但改为test.php后,就不正常了,看来php的配置有问题。
开始检查php.ini,在公司是搜索过的,没有发现有utf,现在再检查下,发现了default_charset="UTF-8",原来vi状态的搜索是区分大小写的。问题应该就在这里,把它改为空,重启Apache。GBK的站点访问正常了。
以为就这样解决了,又发现UTF8站点的htm页不正常了,默认为GB2312了,.php页正常。
想想我这个Blog空间是买的,编码是UTF-8的,访问正常,肯定有其它用户(应该是大部分用户)用的是GB2312的编码,也能正常,所以这个问题肯定是能够解决的。
再去httpd.conf上把AddDefaultCharset GB2312删除。
让朋友访问了下两个站点,终于两边都正常了:)
总结一下,apache的httpd.conf中的AddDefaultCharset可以设置为空,没有必要指定值,除非那台服务器上只有某编码的网站。php的php.ini中的default_charset也可以设置为空,只要程序在头部申明了编码,也就能正常的显示。
检查页面代码,<meta http-equiv="Content-Type" content="text/html;charset=gbk">这句话已经放在最上面了,在所有中文字符之前,没有问题!开始怀疑是服务器配置问题。
检查apache2/conf/httpd.conf,没有发现强制UTF8的设置,也没有发现默认字符的设置。于是从其它机子的httpd.conf中Copy来了AddDefaultCharset GB2312,加了,还是不行。。。,快19点了,先回家再说。
回到家里发现,服务器上一个UTF-8的站首页乱码了。。。,赶紧在全局设置中把AddDefaultCharset GB2312去掉,想想把这句就加在那个GBK的站点配置里吧。
现在,那个GBK的站点访问还是乱码,建了一个test.htm,头部gbk,可以正常显示中文,但改为test.php后,就不正常了,看来php的配置有问题。
开始检查php.ini,在公司是搜索过的,没有发现有utf,现在再检查下,发现了default_charset="UTF-8",原来vi状态的搜索是区分大小写的。问题应该就在这里,把它改为空,重启Apache。GBK的站点访问正常了。
以为就这样解决了,又发现UTF8站点的htm页不正常了,默认为GB2312了,.php页正常。
想想我这个Blog空间是买的,编码是UTF-8的,访问正常,肯定有其它用户(应该是大部分用户)用的是GB2312的编码,也能正常,所以这个问题肯定是能够解决的。
再去httpd.conf上把AddDefaultCharset GB2312删除。
让朋友访问了下两个站点,终于两边都正常了:)
总结一下,apache的httpd.conf中的AddDefaultCharset可以设置为空,没有必要指定值,除非那台服务器上只有某编码的网站。php的php.ini中的default_charset也可以设置为空,只要程序在头部申明了编码,也就能正常的显示。






