请教一个编码转换问题
我在linux下用g++编译一个文件,希望将一个字符串从utf8编码的文本中读出来,然后将其中的半角字符转化为全角字符,然后输出出来转化后的字符串。我的程序这么写的:
string doRegularization(string& strIn)
{
string strNew = " ";
for(int i = 0; i < strIn.length();i++)
{
char c = strIn[i];
if(c > ' ' && c <= '~ ')
{
strNew.push_back((char)163);
}
else
{
strNew.push_back((char) c);
}
}
cout < < "经过文字正规化处理后输入变为: " < <endl < <strNew < <endl;
return strNew;
}
可是输出德却不是想要的结果,比如 "我走了. "输出是 "我走了 "
请教一下这是怎么回事啊?急!!!
[解决办法]
char find[]= ",.?;\ '\ "! ", *ptr, tmp[80]; //find 数组定义标点符号集合 ~
string str( "我走了. ");
strcpy(tmp, str.c_str());
ptr = strtok(tmp, find); //这么查找似乎更合适
if(ptr != NULL) {......}
......
[解决办法]
strNew.push_back((char)163);
strNew.push_back((char)(128+c));
这是转成GB2312码的,不是UTF-8
要先把GB2312码转成UNICODE再转成UTF-8