我有一个关于从mysql查询中转换字符集的问题。
我有2个数据库。一个用于网站(joomla),另一个用于论坛(IPB)。 我正在从joomla内部进行查询,默认情况下有“SET NAMES UTF8”。 我想查询论坛数据库中的一个表。一个名为“ibf_topics”的表。该表具有latin1编码。
我执行以下操作从not-utf8表中选择任何内容。
//convert connection to handle latin1.
$query = "SET NAMES latin1";
$db->setQuery($query);
$db->query();
$query = "select id, title from other_database.ibf_topics";
$db->setQuery($query);
$db->query();
//read result into an array.
//return connection to handle UTF8.
$query = "SET NAMES UTF8";
$db->setQuery($query);
$db->query();
之后,当我想使用选定的图块时,我使用以下内容:
echo iconv("CP1256", "UTF-8", $topic['title'])
问题是,无论如何要避免所有这些麻烦吗? 目前,我无法将论坛数据库更改为UTF8,我无法将joomla数据库更改为latin1:S
答案 0 :(得分:2)
你可以打开2个数据库连接,1个用于joomla,1个用于IPB。您将使用更多资源,但它将使您的代码更易于阅读,并且您可以在数据库设置中执行所有配置(字符集等)。这也可以让以后更容易迁移,以防您的情况发生变化 - 您无需通过代码删除所有SET NAMES
。
答案 1 :(得分:0)
$query = "SET NAMES UTF8";
$db->setQuery($query);
$db->query();
$query = "select id, title from other_database.ibf_topics";
$db->setQuery($query);
$db->query();
答案 2 :(得分:0)
/ * 你可以在数据库连接后设置charset * /
标题('内容类型:text / html; charset = utf-8');
/ * 连接后 * /
mysql_query(" SET NAMES utf8");
/ * 要么 * /
mysql_query(" SET CHARACTER SET utf8");
/ * 要么 * /
mysql_query(" SET COLLATION_CONNECTION =' utf8_general_ci'");