PHP:htmlspecialchars()和非英语语言

时间:2013-07-25 11:03:18

标签: php htmlspecialchars

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

<?php

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

?>

例如,我尝试使用查询“Hello world,Приветмир!” (英文,俄文)。但它让我回归“Hello world,!”。我无法访问php.ini。也许有问题?我该如何解决这个问题?

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

<?php

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

?>

1 个答案:

答案 0 :(得分:4)

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

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

如果您需要更多信息,请参阅What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With TextHandling Unicode Front To Back In A Web App