Php和MySQL中的特殊字符

时间:2013-04-04 15:18:53

标签: php mysql html-entities

我在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;没有重要性和替代品

我得到这样的人物:

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

3 个答案:

答案 0 :(得分: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); 

答案 1 :(得分: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. 如果您使用的是MySQLi,请尝试使用mysql_set_charset()(mysqli_set_charset())。

答案 2 :(得分:0)

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

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