自己实现http协议的时候,如何确定接受到的数据的具体的编码形式? 该用gbk还是utf-8,还是utf-16解码为可见文字?http协议头中的charset都是可以多种的。具体哪一种怎么确定?何况如果解码方式不对,连协议头也解码不出来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你都自己去实现HTTP协议了,这还不好办?一切都是你说了算啊你在发送端对编码进行处理,然后在接收端反处理,有点类似加密和解密协议的格式完全由你控制,比如你处理发送端的UTF-8时,可以再协议头里用代号表示,如:001,那么在接收端分析出是什么代号就行了 如果只是实现http客户端呢,服务端是别人的,怎么知道他response的utf-8,还是utf-16? 1. 首先你在GET的时候指定了编码方式,详情请查看http协议GET /hello.htm HTTP/1.1Accept: */*Accept-Language: zh-cnAccept-Encoding: gzip, deflateIf-Modified-Since: Wed, 17 Oct 2007 02:15:55 GMTIf-None-Match: W/"158-1192587355000"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)Host: 192.168.2.162:8080Connection: Keep-Alive2. 服务器端返回的内容指定了编码格式,如果没有,则用默认的,比如ISO-8859 accept_charset="iso-8859-1, utf-8, utf-16, *;q=0.1";这个才是指定request的编码的如果不知道是utf-8还是utf-16,是无法解析出response中的http头的。因为1个字节和两个字节的问题。我突然想到,难道是用程序来判断字节流的编码是utf-8还是utf-16? 恩。很可能! http://greenbytes.de/tech/webdav/rfc5987.html#usage.guidelines头的编码是有协议的 楼上的意思是http头必须固定是utf-8的是吗?那就明白了。谢谢。 java调用VC写的dll函数,能强制返回么? Java 实现 一个输入输出类 和febonacci数列 关于Object 请看下面简短程序, 为什么一运行就抛错? 请指点 自己的计算器程序实在做不下去了,大虾们进来看看 ArrayList的拷贝 听说接键盘口的条形码读码器不需要编程,那我的键盘该接在什么地方呢? 菜鸟求助 程序啊,急!!!! Java程序运行时,数据的存储位置 linux系统centos6.5跑java1.8+selenium2.44+chrome64+chromedriver2.36报错的问题 Class.forName()问题 关于System类的问题
你在发送端对编码进行处理,然后在接收端反处理,有点类似加密和解密
协议的格式完全由你控制,比如你处理发送端的UTF-8时,可以再协议头里
用代号表示,如:001,那么在接收端分析出是什么代号就行了
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
If-Modified-Since: Wed, 17 Oct 2007 02:15:55 GMT
If-None-Match: W/"158-1192587355000"
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 192.168.2.162:8080
Connection: Keep-Alive2. 服务器端返回的内容指定了编码格式,如果没有,则用默认的,比如ISO-8859
如果不知道是utf-8还是utf-16,是无法解析出response中的http头的。因为1个字节和两个字节的问题。我突然想到,难道是用程序来判断字节流的编码是utf-8还是utf-16? 恩。很可能!