分享、学习、提高
Thank you for reading...
2007/08/08 12:40
Tags: ,
第一:GB2312的页面,在使用ajax传递中文数据时,数据会出现乱码。

此时在处理页面头部加上指定编码的语句,就可以正常发送了。

asp
Response.AddHeader "Charset","GB2312"


php
header('Content-type: text/html;charset=GB2312');


第二:GB2312的页面,向ajax发送中文数据时,数据先用JS的escape转换一下。
如果是UTF8页面,需要用encodeURIComponent来转换。
2007/05/23 11:05
Tags: , ,
一个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
Tags: , , ,
服务器上上了一个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也可以设置为空,只要程序在头部申明了编码,也就能正常的显示。
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]