很奇怪的处理中文出现乱码有关问题
很奇怪的处理中文出现乱码问题
问题描述如下:
从网页中取到一个字符串,如:txt1=abc&txt2=123%E4%B8%AD%E5%9B%BD&iud=2&submit=submit
如果用cin.read(char* content,len)赋值到content变量上,将变量输出后,在这个字符串的最后会多出一些额外的字符(不知是不是mod_fastcgi的Bug),但将这个变量放入解码函数中解码出来的中文是正确的。
如果这样:
ostringstream oo;
oo.write(content,len);
cout < < oo.str();
未解码前的字符串是正确的,没有多出额外的字符。
但是,将oo.str().c_str()进行中文解码时出现中文乱码,又另外写了一个对string进行解码的函数,也解不出来。
请教c++高手,什么地方出的错?
解码函数见下:
47 void Parser::getDecoded(map <string,string> &m, string str)
48 {
49 vector <string> vv;
50 string oneSec;
51
52 for(int i=0; i <str.size(); i++)
53 {
54 char ch = str[i];
55
56 switch(ch)
57 {
58 case '% ':
59 char c1 = hex(str[i++]);
60 char c2 = hex(str[i++]);
61 ch = c1 * 16 + c2;
62 break;
63 case '+ ':
64 ch = ' ';
65 break;
66 }
67
68 if(ch == '& ')
问题描述如下:
从网页中取到一个字符串,如:txt1=abc&txt2=123%E4%B8%AD%E5%9B%BD&iud=2&submit=submit
如果用cin.read(char* content,len)赋值到content变量上,将变量输出后,在这个字符串的最后会多出一些额外的字符(不知是不是mod_fastcgi的Bug),但将这个变量放入解码函数中解码出来的中文是正确的。
如果这样:
ostringstream oo;
oo.write(content,len);
cout < < oo.str();
未解码前的字符串是正确的,没有多出额外的字符。
但是,将oo.str().c_str()进行中文解码时出现中文乱码,又另外写了一个对string进行解码的函数,也解不出来。
请教c++高手,什么地方出的错?
解码函数见下:
47 void Parser::getDecoded(map <string,string> &m, string str)
48 {
49 vector <string> vv;
50 string oneSec;
51
52 for(int i=0; i <str.size(); i++)
53 {
54 char ch = str[i];
55
56 switch(ch)
57 {
58 case '% ':
59 char c1 = hex(str[i++]);
60 char c2 = hex(str[i++]);
61 ch = c1 * 16 + c2;
62 break;
63 case '+ ':
64 ch = ' ';
65 break;
66 }
67
68 if(ch == '& ')