我的单词在我的mysql中有“ñ/Ñ”字符。但是当我打印出来的时候,它被一个带有问号标志的钻石取代。 这是迄今为止所做的,但没有奏效。
<meta charset="utf-8">
mysql:host=localhost;dbname=dbnameko;charset=UTF-8
Collation : latin_sedish to utf8_general_ci
我谷歌并搜索了stackoverflow线程,但没有答案是对的。
答案 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
答案 1 :(得分:0)
您的网络服务器不知道此字符集。如果您使用Apache在配置文件中添加此行或.htaccess
AddDefaultCharset utf-8