http url 请求
来源:互联网 发布:银行卡卡号生成软件 编辑:程序博客网 时间:2024/05/17 03:54
http 也存在着不同的编码 查看网站源码就会发现
1、charset=gb2312
在GB2312编码中 每个汉字都及符号都是用两个字节来表示。第一个字节 成为“高字节” 第二个字节成为高字节
所以在 当使用GB2312编码 传递中文参数 就需要对中文进行编码 。 c++
string strCoding::UrlGB2312(char * str) { string dd; size_t len = strlen(str); for (size_t i=0;i<len;i++) { if(isalnum((BYTE)str[i])) //判断是否是字母或者数字 { char tempbuff[2]; //字母或者数字 不改变 sprintf(tempbuff,"%c",str[i]); dd.append(tempbuff); } else if (isspace((BYTE)str[i])) //判断是否空格 { dd.append("%20"); //空格使用%20代替 } else { char tempbuff[4]; sprintf(tempbuff,"%%%X%X",((BYTE*)str)[i] >>4,((BYTE*)str)[i] %16); //向右移动 四位获得高四位 高字节 摸上16去的后四位作为低字节 需要出现% 所以 要2个%% dd.append(tempbuff); } } return dd; }2、charset=UTF-8
表示该网页使用的是UTF-8的字符集
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码
用在网页上可以同一页面显示中文简体繁体及其它语言(如日文,韩文)
基本思想就是 英语字符 数字不变 空格变成+ 汉字变成三字节
string strCoding::UrlUTF8(char * str) { string tt; string dd; GB2312ToUTF_8(tt,str,(int)strlen(str)); size_t len=tt.length(); for (size_t i=0;i<len;i++) { if(isalnum((BYTE)tt.at(i))) { char tempbuff[2]={0}; sprintf(tempbuff,"%c",(BYTE)tt.at(i)); dd.append(tempbuff); } else if (isspace((BYTE)tt.at(i))) { dd.append("+"); } else { char tempbuff[4]; sprintf(tempbuff,"%%%X%X",((BYTE)tt.at(i)) >>4,((BYTE)tt.at(i)) %16); dd.append(tempbuff); } } return dd; }
将GB2312 转换成UTF-8
void strCoding::GB2312ToUTF_8(string& pOut,char *pText, int pLen) { char buf[4]; memset(buf,0,4); pOut.clear(); int i = 0; while(i < pLen) { //如果是英文直接复制就可以 if( pText[i] >= 0) { char asciistr[2]={0}; asciistr[0] = (pText[i++]); pOut.append(asciistr); } else { WCHAR pbuffer; Gb2312ToUnicode(&pbuffer,pText+i); UnicodeToUTF_8(buf,&pbuffer); pOut.append(buf); i += 2; } } return; }
void strCoding::Gb2312ToUnicode(WCHAR* pOut,char *gbBuffer){ ::MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,gbBuffer,2,pOut,1); return;}
void strCoding::UTF_8ToUnicode(WCHAR* pOut,char *pText){ char* uchar = (char *)pOut; uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F); uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F); return;}
则完成了
0 0
- http url 请求
- java HTTP请求 URL
- 利用url进行http请求
- C++ HTTP 请求 URL编码
- HTTP请求url返回数据
- HTTP Get请求URL最大长度
- 需要HTTP鉴权的URL请求
- 需要HTTP鉴权的URL请求
- HTTP Get请求URL最大长度
- HTTP Get请求URL最大长度
- java发送http请求(URL、HttpClient)
- HTTP Get请求URL最大长度
- http请求获取跳转后URL JAVA
- HTTP基础:URL格式、 HTTP请求、响应、消息
- URL与 HTTP,iOS中发送HTTP请求
- HTTP基础:URL格式、 HTTP请求、响应、消息
- HTTP基础:URL格式、 HTTP请求、响应、消息
- HTTP基础:URL格式、 HTTP请求、响应、消息
- NGUI学习笔记(二)UISprite
- Zookeeper源码分析(9)- ToBeAppliedRequestProcessor
- 出现ORA-12154: TNS:could not resolve the connect identifier specified 连接错误
- 当DG进行failover之后重新恢复DG(利用rman 11gduplicate的ADG特性)
- Zookeeper源码分析(10)- FinalRequestProcessor
- http url 请求
- bugfix:reboot模式下不能开机
- android apkbuilder.bat批处理
- Java高效编程之一【创建和销毁对象】
- Zookeeper源码分析(11)- FollowerRequestProcessor
- Android Canvas绘图详解(图文)
- NGUI学习笔记(三)UILable
- 黑马程序员-7k面试题-交通灯管理系统
- 的哈是大师姐科大看见啊萨克解答