刘稻博客(欢迎订阅到邮箱、实时关注/交流)

分享一些关于网络推广经验、网站推广方法、网站优化技巧、SEO优化方案、网络营销方案!

上一篇: 网站URL路径的中文问题 [URL中文编码问题] (上) 下一篇:百度算法更新与收录变化历史记录
概述:

URL中其实也是有编码的,百度和谷歌识别出来的URL就是用了不同的编码,Google是UTF8的,而百度是GB2312的,所以对于那些URL中包含中文的朋友来说的确是挺痛苦的,经过资料查阅,发现不管是Apache还是ISAPI_Rewrite,URL均识别的是UTF8编码的。

继上次分享的 网站URL路径的中文问题 [URL中文编码问题] () 一文,大概的意思大家都有一点印象了,本文继续深入分析 Rewrite重写中文路径时乱码 的问题!
   
URL中其实也是有编码的,百度和谷歌识别出来的URL就是用了不同的编码,GoogleUTF8的,而百度是GB2312的,所以对于那些URL中包含中文的朋友来说的确是挺痛苦的,经过资料查阅,发现不管是Apache还是ISAPI_RewriteURL均识别的是UTF8编码的。
 
PS
:字符编码转换过程: gbkgb2312  >>  uinicode  >>  utf8
  
第一,当在浏览器地址栏输入中文时(浏览器会自动转换):
1) url路径:utf8 格式
2) url参数:gbk 格式
3) resquest.QueryString 网页本身的 meta chartset utf8/gbk 决定 (如:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />        
4) server.UrlEncodeutf8 格式
 
比如:
搞笑视频(gbk编码):%B8%E3%D0%A6%CA%D3%C6%B5
搞笑视频(utf8编码):%E6%90%9E%E7%AC%91%E8%A7%86%E9%A2%91
 
浏览器会自动转换:
http://www.haha008.com/tag.asp?t=搞笑视频
http://www.haha008.com/tag.asp?t=%B8%E3%D0%A6%CA%D3%C6%B5
http://www.haha008.com/tag/搞笑视频
http://www.haha008.com/tag/%E6%90%9E%E7%AC%91%E8%A7%86%E9%A2%91
   
第二,当网页的编码为(utf-8)(<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />)时,
 
1)不会出现乱码地址:
http://www.haha008.com/tag/搞笑视频
http://www.haha008.com/tag/%E6%90%9E%E7%AC%91%E8%A7%86%E9%A2%91
 
2)乱码地址:
http://www.haha008.com/tag.asp?t=搞笑视频
http://www.haha008.com/tag.asp?t=%B8%E3%D0%A6%CA%D3%C6%B5
   
PS:出现乱码这个原因是,在进行rewrite重写时,默认把参数转换为unicode 格式的编码(输入参数要求是utf8格式的,输出参数为gbk格式),而传递到网页时,以utf8方式解码,当然会出现乱码。
 
解决办法:
1、在网页页面接到到gbk格式的参数后,通过编程把gbk变成utf8格式,即没有加上NU指定项。
2、在rewrite内部转换时,把输出参数从gbk变成utf8格式,即加上NU指定项(显然第2种方法是比较方便的)。
  
第一,下面是中文进行传递的过程(rewrite规则里,没有加上NU指定项): 

URL中文路径乱码
 
第二,下面是中文进行传递的过程(rewrite规则里,有加上NU指定项): 

URL中文路径乱码
  
下面是测试页面: 

笑话:
gbk:   %D0%A6%BB%B0
utf8:  %E7%AC%91%E8%AF%9D
 
1、没NU下:

页面meta=utf8:(要求长度为:6
test1.asp?q=%D0%A6%BB%B0          乱码(Ц): 长度为4 长度不够
test1.asp?q=%E7%AC%91%E8%AF%9D    正常 : 长度为6

页面meta=gbk:(要求长度为:4
test2.asp?q=%D0%A6%BB%B0          正常 : 长度为4
test2.asp?q=%E7%AC%91%E8%AF%9D    乱码(绗戣瘽): 长度为6 长度过长

页面meta=utf8:(要求长度为:6
test1/%D0%A6%BB%B0          乱码(空白)- 长度不够*2
test1/%E7%AC%91%E8%AF%9D    乱码(Ц)- 长度不够 输入参数要求是utf8格式的,输出参数为gbk格式

meta=gbk:(要求长度为:4
test2/%D0%A6%BB%B0          乱码(Ц)- 长度不够
test2/%E7%AC%91%E8%AF%9D    正常 输入参数要求是utf8格式的,输出参数为gbk格式

2、有NU下:

页面meta=utf8:(要求长度为:6
test1.asp?q=%D0%A6%BB%B0          乱码(Ц)- 长度不够
test1.asp?q=%E7%AC%91%E8%AF%9D    正常

页面meta=gbk:(要求长度为:4
test2.asp?q=%D0%A6%BB%B0          正常
test2.asp?q=%E7%AC%91%E8%AF%9D    乱码(绗戣瘽)- 长度过长

页面meta=utf8:(要求长度为:6
test1/%D0%A6%BB%B0          乱码(Ц)
test1/%E7%AC%91%E8%AF%9D    正常

页面meta=gbk:(要求长度为:4
test2/%D0%A6%BB%B0          正常
test2/%E7%AC%91%E8%AF%9D    乱码(绗戣瘽)

结论:
1.htaccess文件自身为为UTF8gbk格式时都一样的结果。
2rewriteNU项,只对重写前?问号前面的URL路径有效,对重写前?问号后面的参数无效。
3rewriteNU项:意思是原本原样地把参数传送过去,期间不进行任何编码。
4rewriteNU项:调用默认的utf编码函数,把参数转码为unicode格式,然后在页面中直接request.Querystring即可。(PS:字符编码转换过程: gbkgb2312  >>  uinicode  >>  utf8)

1接收页面为 meta = utf8 ,?问号后面的参数:—— 与NU项无关,直接传中文不可以,要utf编码。(要编码,X都有错)
2、接收页面为 meta = gbk ,?问号后面的参数:—— 与NU项无关,直接传中文不可以,要utf编码。(要编码,X都有错
3接收页面为  meta = utf8 ,?问号前面的URL路径:—— 必须要有NU项,直接传中文(浏览器自动utf编码) 或 进行utf编码 都可以。
4接收页面为  meta = gbk ,?问号前面的URL路径:——NU项时,要进行gbk编码;没有NU项时,要进行utf编码 或 直接中文(浏览器自动utf编码)

相关阅读:

网站URL路径的中文问题 [URL中文编码问题] (上)

分类:程序开发| 标签:网站中文路径  网站中文URL  中文URL编码  | 查看: | 发表时间:2013-8-28

本文地址:http://www.liudao51.com/post/146.html(转载请保留网址)

  • Gravatar Icon
    回复
  • quote 5.啥事2016-12-6 16:21:32
  • 感谢分享! 文章不错 !
    www.desongzhen.com

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于本文

您正在阅读的是:网站URL路径的中文问题 [Rewrite重写中文路径时乱码] (下)
jenryl 发表于:2013-8-28 23:28:15
分类:程序开发
关键词:网站中文路径  网站中文URL  中文URL编码  
订阅刘稻博客

什么是RSS订阅?查看解释
订阅到您的在线阅读器

抓虾 google reader my yahoo bloglines 鲜果 哪吒

博客作者

刘 稻

# 给我留言 #

# 联系QQ:279310426      # 邮箱:liudao51@qq.com

# 标签:28推、网站推广、网站优化、网络营销、seowhy

# 刘稻 / 优化推广/ QQ群:242901197 (加群交流)

# 实时关注:订阅本博客到你的 QQ 邮箱 填写您的邮件地址,订阅我们的精彩内容:

推荐阅读

最近发表

最新评论及回复

Search

网站分类

文章标签

Copyright 2009-2011 网络营销方案. Some Rights Reserved.

Powered By Z-Blog 1.8 Walle Build 100427 Code detection by Codefense Template Designed By houbenbo