我有一个关于从 mysql 查询内部转换字符集的问题。
我有 2 个数据库。一个用于网站 (joomla),另一个用于论坛 (IPB)。 我正在从 joomla 内部进行查询,默认情况下它有“SET NAMES UTF8”。 我想查询论坛数据库中的一个表。名为“ibf_topics”的表。这个表有 latin1 编码。
我执行以下操作以从非 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();
之后,当我想使用选定的图 block 时,我使用以下命令:
echo iconv("CP1256", "UTF-8", $topic['title'])
问题是,有没有办法避免所有这些麻烦? 现在,我无法将论坛数据库更改为 UTF8,也无法将 joomla 数据库更改为 latin1 :S
最佳答案
您可以打开 2 个数据库连接,1 个连接到 joomla,一个连接到 IPB。您将使用更多资源,但这将使您的代码更易于阅读,并且您可以在数据库设置中进行所有配置(字符集等)。这也将使以后的迁移变得更容易,以防您的情况发生变化 - 您无需通过代码删除所有 SET NAMES
。
关于php - 在mysql查询中转换字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702399/