这是我的代码:
$result = "";
$str = "Тугайный соловей";
for ($y=0; $y < strlen($str); $y++){
$tmp = substr($str, $y, 1);
$result = $result.$tmp;
}
echo "result = ".$result;
$ result给出:ТугайнÑ<йÑоловÐμй
我正在寻找两个星期来解决这个问题阅读所有类型的文章,但仍然.......
非常感谢!
答案 0 :(得分:4)
您需要使用multi-byte functions而不是普通的字符串函数。
$result = "";
$str = "Тугайный соловей";
for ($y=0; $y < mb_strlen($str); $y++){
$tmp = mb_substr($str, $y, 1);
$result = $result.$tmp;
}
echo "result = ".$result;
答案 1 :(得分:1)
我已经尝试过你的代码,我在UTF-8编码中看到了正确的字符串。如果页面字符集或浏览器设置为ISO-8859-1,我得到错误的字符串。所以使用正确的编纂就足够了。
答案 2 :(得分:1)
只是详细说明Juanmi的回答:字符集类型(因为我已经截取了屏幕截图)......
当指定了正确的编码时,您的代码似乎有效,但它将每个字节视为自己的字符,这不是处理UTF-8的正确方法。您可能需要multibyte-aware string functions。
答案 3 :(得分:0)
您使用的函数不是UTF-8字符串上的UTF-8字符串
改用mb_substr
编辑:xeoncross上面的答案是一样的,使用他的代码:)