bool Utf8ToZhong(const std::string &utf8_str, std::string *result_str) {
if(utf8_str.size() == 0) {
return false;
}
int move_flag = 0;
string str;
int start = 0,end = utf8_str.size();
char str_zhong[128];
int str_it = 0;
while(start < end) {
if(utf8_str[start] == '%') {
if(move_flag == 0) {//汉字起始,计算一个汉字是几个字节
int y = 0;
y = HexChar2Dec(utf8_str[start+1]);
y = (y<<4) +HexChar2Dec(utf8_str[start+2]);
int flag = 7;
while(flag > 0) {
if((y&(1<<flag)) == 0) {
break;
}
flag--;
}
move_flag = 7-flag;//总共几个字节
}
start++;
}
else {
if(move_flag == 0) {
str += utf8_str[start];
start++;
}
else {
int y = 0;
y = HexChar2Dec(utf8_str[start]);
y = (y<<4) +HexChar2Dec(utf8_str[start+1]);
str_zhong[str_it] = y;
str += str_zhong[str_it];
str_it++;
start += 2;//偏移掉一个%
if(move_flag > 0) {
move_flag--; //处理一个字节,消掉一个字节
}
}
}
}
*result_str = str;
return true;
}
utf8串输出中文
最新推荐文章于 2022-03-08 22:06:57 发布