LAMP UTF-8错误地保存到MySQL数据库

时间:2010-10-06 00:49:45

标签: php mysql utf-8 character-encoding lamp

我已将我的数据库从Latin 1转换为UTF8,并使用phpPMyAdmin输入数据并正确显示。但是,在我用PHP开发的页面中查看并使用我的简单CMS编辑它可以保存必须编码错误的字符。

我花了几个小时进行研究,最终想出了这段代码:

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn_products);

当在数据库操作之前放置时纠正问题 - 非常棒!

我已经做了一些进一步的研究,并且(我相信)发现了一种在整个MySQL服务器上使其成为永久性的方法,但是我想永久地为每个数据库更改它,因为大多数使用服务器的站点是拉丁文1,需要保持这种状态。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

不幸的是,你不能为每个数据库做这件事,如果客户端没有说明任何内容,它可以由客户端应用程序设置,也可以由服务器设置。你只需要在每个会话中设置一次,所以只是教自己让一个永远跟随mysql_select_db()的{​​{1}}可能与mysql_query('SET NAMES utf8;')(或你需要的任何字符集)应该做的。