首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络协议 >

急HTTP有关问题

2013-04-02 
急!急!急!HTTP问题我知道一个下载地址比如:http://192.168.1.10/a/测试.txt,我就拆开组装成GET请求包了。文

急!急!急!HTTP问题
我知道一个下载地址比如:http://192.168.1.10/a/测试.txt,我就拆开组装成GET请求包了。文件名是中文的,可能的情况是服务器支持GBK编码不用转换,可能服务器是utf-8编码,需要转换中文。问:我怎么才能事先知道服务器的编码呢?还是笨办法都试一次???

[解决办法]

引用:
请问如何“用HEAD请求检测一下服务器的默认编码”呢?


睡前一帖,呵呵。希望能帮上忙。

其实HTTP标准并没有对编码协商做出严格的规范。但一个合格的web服务器应该要支持多种编码的。绝大多数情况下你都不必担心这个问题。
当然不排除某些服务器对编码集支持不够。比如有些产品或者个人可能自己写了一个WEB Server,只支持有限的编码。

这时候客户端应该做的是:
1、URL能用ASCII就用ASCII
2、如果URL包含非ASCII字符,优先用UTF8编码,其次用ANSI。
3、把非ASCII部分转成转成百分号编码。(尽量不要直接把raw bytes放进http头)。比如搜索“中国”,浏览器给出的其实是http://www.baidu.com/baidu?wd=%D6%D0%B9%FA,这是GBK。
3、在HTTP请求头的Content-Type里加上编码说明。
    比如Content-Type: text/html; charset=utf-8


这其实也并不能保证服务器就能领会,一些嵌入式产品里的WEB服务器只实现了HTTP标准中的一小部分。对非ASCII编码直接不理睬,遇到这种也是只有叹气的。

如果做了上面所述,服务器还是返回不正常。可以看一下服务器返回的HTTP头部有没有charset=xxx这样的信息。有就用那个再试。

这还不行?只有你说的蛮力尝试了。可以把HTTP GET方式改成HTTP HEAD,这样服务器只会返回HTTP头,不会返回真实数据。
额,这就是我说的检测了……

热点排行