0

我正在尝试用诸如等数字实体替换一些非标准字符,如 ë,Ë,ç,Ç Ë'但我遇到了一些问题。

当我尝试像这样直接替换它们时,它工作正常:

$string = "Ë";
$vname = str_replace("Ë","AAAA",$string);
echo $vname."<br>";

结果我得到了 AAAA。但是,当我尝试用 POST 替换从表单中获取的字符串中的字符时,它不会更改字符。这是一个例子:

<?php
if(isset($_POST['submit'])) {
$string = $_POST['title'];
if ($string == "Ë")
echo "Yes";
else
echo "No";
$vname = str_replace("Ë","AAAA",$string);
echo $vname."<br>";
echo $string;
}
?>
<form method="post" name="Form">
Title: <input name="title" type="text" value="" size="20"/>
<input name="submit" type="submit" value="submit"/>
</form> 

任何帮助都会很棒!

4

1 回答 1

1

您的字符集很可能是错误的。我建议在输出 html 时发送以下标头:

<?php header("content-type: text/html; charset=utf-8"); ?>

字符集与您存储文件的字符集匹配的位置。

编辑:只是更多的信息。您存储的文件位于一个字符集中,例如 latin1,而您的浏览器将您的 html 页面解释为另一个字符集(例如 utf-8)。当浏览器再发送Ë字符时,它会发送utf-8代码0xc38b,而同样的字符是0xcb。如您所见,这些不匹配。

编辑 - 您还可以通过 HTML5 或 xHTML 更新 CHARSET:

HTML5

<meta charset="UTF-8"/>

xHTML

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
于 2012-06-06T10:52:47.497 回答