在MFC中用ReadString函数读取了网页源码,然后显示出来读取的是乱码,MFC采用的是Unicode编码,网页是GB2312编码,如何将Unicode CString 转换成 GB2312 CString?谢谢!
#include<iostream> using namespace std; char dec2hexChar(short int n) { if ( 0 <= n && n <= 9 ) { return char( short('0') + n ); } else if ( 10 <= n && n <= 15 ) { return char( short('A') + n - 10 ); } else { return char(0); } } short int hexChar2dec(char c) { if ( '0'<=c && c<='9' ) { return short(c-'0'); } else if ( 'a'<=c && c<='f' ) { return ( short(c-'a') + 10 ); } else if ( 'A'<=c && c<='F' ) { return ( short(c-'A') + 10 ); } else { return -1; } } string escapeURL(const string &URL) { string result = ""; for ( unsigned int i=0; i<URL.size(); i++ ) { char c = URL[i]; if ( ( '0'<=c && c<='9' ) || ( 'a'<=c && c<='z' ) || ( 'A'<=c && c<='Z' ) || c=='/' || c=='.' ) { result += c; } else { int j = (short int)c; if ( j < 0 ) { j += 256; } int i1, i0; i1 = j / 16; i0 = j - i1*16; result += '%'; result += dec2hexChar(i1); result += dec2hexChar(i0); } } return result; } string deescapeURL(const string &URL) { string result = ""; for ( unsigned int i=0; i<URL.size(); i++ ) { char c = URL[i]; if ( c != '%' ) { result += c; } else { char c1 = URL[++i]; char c0 = URL[++i]; int num = 0; num += hexChar2dec(c1) * 16 + hexChar2dec(c0); result += char(num); } } return result; } int main() { string str = "你好"; cout<<str<<endl; string temp = escapeURL(str); cout<<temp<<endl; cout<<deescapeURL(temp)<<endl; return 0; }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。