1

我在 PHP 中遇到了一些特殊字符的问题。我在 mysql (utf8_hungarian_ci) 中有一个表,其中包含一些带有特殊字符的文本,如 á、á、Ó、Ö、ö、ü,我想在我的页面上显示此文本。我已经测试过:

$text = htmlentities($text); //to convert the simple spec chars
$search = array("& otilde;","&O tilde;","& ucirc;","&U circ;");
$replace = array("& #337;","& #336;","& #369;","& #368;");
$text = str_replace($search, $replace, $text);
echo $text;

但此代码仅在 $text 未从数据库设置时才有效。如果我使用此代码并且我的 $text 是从数据库中选择的,它不会显示任何文本,并且如果我只使用: echo $text; 没有 htmlentities 和替换

我得到这样的字符:�</p>

我知道对此有一些问题,我已经尝试过接受的答案,但它仍然不起作用,所以如果你愿意并且如果你有时间,请帮助我。还是非常感谢。祝大家有个美好的一天!

4

3 回答 3

1

还可以尝试在您的标头中设置以使用 UTF-8 编码。

在您的 PHP 文件中,添加

header('Content-type: text/html; charset=utf-8'); 

以及在您的<meta>标签中指定编码为 UTF-8,以确保您告诉浏览器。看看它是否能解决问题。

以及在您的meta标签中包含 UTF-8 编码。

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
...
</head>

编辑:

  1. 如果您有权访问 Apache 配置,请查看 AddDefaultCharset 是否设置为另一种编码。
  2. 尝试使用mysql_set_charset()(mysqli_set_charset() 如果您使用的是 MySQLi)。
于 2013-04-04T15:26:14.083 回答
1

尝试把它放在你的 html 头文件中:

<meta http-equiv="Content-type" content="text/html; charset=utf-8" />

(此外,您可能需要将文件保存为“utf-8”文件编码)

.

其次,您可以使用它来尝试翻译或删除在您的情况下总是打印出来的令人不安的字符:

$str_out = @iconv("ISO-8859-1", "UTF-8//TRANSLIT//IGNORE", $str_in); 
于 2013-04-04T15:22:58.720 回答
0

这是一个稍微通用的答案,但请阅读我写的关于 PHP/MySQL 堆栈中常见字符编码陷阱的这篇文章,如果您仍然有问题,让我们尝试解决它们。

http://webmonkeyuk.wordpress.com/2011/04/23/how-to-avoid-character-encoding-problems-in-php/

于 2013-04-05T08:12:56.357 回答