首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个编码转换有关问题

2012-03-02 
请教一个编码转换问题我在linux下用g++编译一个文件,希望将一个字符串从utf8编码的文本中读出来,然后将其

请教一个编码转换问题
我在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

热点排行