PHP:htmlspecialchar()和非英语语言


PHP: htmlspecialchars() and non-English languages

我是PHP新手。当我尝试带有ENT_HTML5标志的htmlspecialchar()时,它可以工作,但所有非英语单词都会被删除。我试过了:

<?php
$sometext = $_GET['query'];
$sometext = htmlspecialchars($sometext, ENT_HTML5, 'UTF-8');
echo $sometext;
?>

例如,我尝试了查询"你好,世界,Привермир!"(英语,俄语)。但它回复我"你好,世界!"。我没有php.ini的访问权限。也许有问题?我该如何解决这个问题?

谢谢你,@deceze,我找到了解决方案:

<?php
$sometext = $_GET['query'];
$sometext = htmlspecialchars($sometext, ENT_HTML5, 'Windows-1251');
echo $sometext;
?>

问题是告诉PHP您的字符串是UTF-8编码的,而它显然不是。因此,PHP无法正确解释它,并删除所有非UTF-8编码的字母。

实际上,将源代码文件保存为UTF-8和/或更改字符串来源的编码声明,或将第三个参数更改为字符串实际保存的编码。

如果您需要更多信息,请参阅每个程序员绝对、积极地需要了解的关于编码和字符集的信息在Web应用程序中使用文本和前后处理Unicode。