2011-05-09 89 views
0

我有一堆来自拉丁语-1 MySQL数据库的丹麦语文本,并且它在PHP中回显时显示正确。当我需要回显一些其他丹麦字符时,问题就开始了,这些字符不是从数据库中取出的。MySQL整理和PHP字符集冲突

我做的是实际输出头

Content-Type: text/html; charset=iso-8859-1 

也让非查询字符正确显示为好。

问题是,当我这样做查询字符显示不正确。

+0

你应该切换到utf-8而不是 – Flask 2011-05-09 09:45:04

回答

3

仅仅因为数据存储在latin-1整理表中并不意味着它是拉丁-1编码。这是由于MySQL在连接SET NAMES设置与排序规则相同时没有进行任何字符转换。

我怀疑你有一些UTF8字符存储在latin1数据库,这是令人困惑的问题。

如需更多帮助,请您可以添加的细节:

  • 已设置的
  • 详细MySQL连接编码,其中“无查询”字符从
+0

不要使用'SET NAMES',而是使用['mysql_set_charset'](http://php.net/mysql_set_charset)。 – Gumbo 2011-05-09 10:03:13

+0

好吧,如果你使用默认的MySQL适配器,那将会起作用。我在几周前写的博客文章中根据适配器提供了不同方法的详细信息:http://webmonkeyuk.wordpress.com/2011/04/23/how-to-avoid-character-encoding-problems-在-PHP / – 2011-05-09 10:15:23

0

未来使用unicode。 UTF-8 =>正确的方法。因此,在数据库中设置utf8_unicode_ci,UTF-8为页面charset,并在查询之前设置mysql_query(“SET NAMES UTF8”);