在PHP PDO中回显ñ/Ñ

时间:2012-11-29 12:43:54

标签: php pdo

我的单词在我的mysql中有“ñ/Ñ”字符。但是当我打印出来的时候,它被一个带有问号标志的钻石取代。 这是迄今为止所做的,但没有奏效。

<meta charset="utf-8">
mysql:host=localhost;dbname=dbnameko;charset=UTF-8
Collation : latin_sedish to utf8_general_ci

我谷歌并搜索了stackoverflow线程,但没有答案是对的。

2 个答案:

答案 0 :(得分:0)

我们自1991年以来一直使用Unicode,所以相当令人遗憾的是,这些问题仍然使我们无法继续工作。不幸的是,i18n的默认设置有时都是错误的,所以我们必须自己做事......

就HTTP而言,你做了正确的事,但你必须为MySQL连接做正确的事......

试试这个:

  $result = mysql_query("SET NAMES utf8; SET CHARACTER SET utf8;");
  $cmd = "select * from yourtable";
  $result = mysql_query($cmd); //all should data should arrive correctly encoded

为避免在每个连接中都这样做,您可以更改.cnf文件。请查看以下SO问题的接受答案:Change MySQL default character set to UTF-8 in my.cnf?


更新:事实证明问题确实存在于SQL连接字符串中。但是,在Apache AddDefaultCharset上也会引起问题,所以我留下这部分答案。

如果你不明白它的作用,AddDefaultCharset很讨厌!如果设置了,Apache将为text / html和text / plain内容类型的响应设置charset。这实际上意味着你的意志将被忽略。要么将其设置为utf-8作为Sacx的推荐,要么将其设置为关闭。 (顺便说一句,如果它不是设置为特定字符集而是设置为“on”,这将与设置为“iso-8859-1”相同,这使调试这种情况变得更加困难!)更多信息: http://httpd.apache.org/docs/2.2/mod/core.html


另见: How to make MySQL handle UTF-8 properly

答案 1 :(得分:0)

您的网络服务器不知道此字符集。如果您使用Apache在配置文件中添加此行或.htaccess

AddDefaultCharset utf-8