C++-uicode字符转UTF-8当中文字符数为奇数时存在乱码

发布于 2016-10-13 10:41:02 字数 164 浏览 1294 评论 2

根据utf-8字符编码的特性进行转换,发现当中文字符个数为奇数时,例如:3个中文字符,那么转换为utf-8所占字节数为9,那么显示时按照每个字符2个字节显示,最后多出的一位会被系统默认显示为“?”,传递到网页时就存在了乱码,假如中文字符数为偶数一切正常。 请问大家有什么好的办法可以解决。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晚风撩人 2017-02-08 23:13:27

"奇数的汉字会乱码" -- 常见于 用gbk去解utf8字节流. 因为utf8一般3字节, gbk2字节. 所以有这种问题.

参见 @java 乱码, 转码不成功的问题

虐人心 2016-12-08 10:44:41

可以用类似的方法处理。计算长度,

<?
function sutstr_cut($str,$len){
if (strlen($str) <= $len) return $str;
$n = 0;
$tempstr = '';
for ($i=0; $i<$len; $i++) {
if (ord(substr($str,$n,1)) > 224) {
$tempstr .= substr($str,$n,3);
$n += 3;
$i++; //把一个中文按两个英文的长度计算
} elseif (ord(substr($str,$n,1)) > 192) {
$tempstr .= substr($str,$n,2);
$n += 2;
$i++; //把一个中文按两个英文的长度计算
} else {
$tempstr .= substr($str,$n,1);
$n ++;
}
}
return $tempstr.'...';

}

?>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文