我有一个包含utf8_general_ci varchar字段的InnoDB表的MySQL数据库。当我通过PHP(通过PEAR :: MDB2)获取它们并尝试输出它们(通过Smarty)时,我得到了?符号。我想知道如何解决这个问题,这很可能是由PHP引起的。字符编码问题:MySQL 5.0 + PHP 5.2
良好的信息知道:
- 据该网站的新版本,我的工作,老版本有,即使它并没有使用Smarty的,也不MDB2同样的问题,所以他们是最有可能不是原因。旧程序员使用htmlentities()来解决问题,但我试图避免这种情况。
- 我所有文件(模板,源代码等)的字符编码都是UTF-8,没有BOM。
- 当我显示一个页面时,所有重音字符(模板中的那些字符,而不是来自MySQL的)会正确显示,并且浏览器中的编码为UTF-8。如果我手动将其切换到ISO-8859-1,那么MySQL中的字符正确输出,但没有其他字符。
基本上,似乎PHP或MySQL在查询/获取过程中的某个点将数据库中包含的UTF-8数据转换为ISO-8859-1,这就是我想要解决的问题。
我已经做了很多搜索,但没有找到任何解决方案,我希望问题出在某个地方。我想避免使用htmlentities()或utf8_encode(),但这可能是PHP6出现之前唯一的方法。
谢谢你对此的意见!
这些是如何来看?直行 ?标记或?在黑色钻石? – 2011-01-06 15:44:51