Ajax + utf-8:根本不能修改西里尔字符串(使用substr等),奇怪的行为


ajax + utf-8: can't modify cyrillic string at all (using substr etc), strange behavior

我切换到utf-8字符集,这里有一个问题…

一步一步地工作(它确实工作了!):

& lt;Textarea name="comment">blahblahblah -----> javascript事件----->使用ajax POST方法发送blahblahblah文本-----> part1.php文件成功接收$comment=$_POST["comment"];并在文本区域下面的html页面上显示它,没有问题。

但是如果文本没有修改,或者可以修改,但应该只包含英文字母,那么一切都是完美的。否则,页面上将显示矩形,而不是西里尔字母。

这里是part1.php的代码和几个HTML页面的结果:

$comment=$_POST["comment"];
echo $comment."|".strlen($comment)."|".substr($comment,0,1);

在文本区输入:"Hello"。显示在文本区下面:hello|5|h//OK

在文本区输入:"Hello,Варна"。显示在文本区下面:Hello,Варна|16|H//OK

在文本区输入:"Варна"。显示在textarea下面:none, "Error on page"显示在浏览器的左下方,就像javascript错误一样。

如果我删除substr($comment,0,1)并写入"Варна",它将显示Варна|10,没有任何错误。

为什么会发生这种情况,所以我不能提取字符串的任何部分来修改它?什么好主意吗?

谢谢。

您应该使用 mb_strlen mb_substr