php - 在mysql查询中转换字符集

标签 php mysql joomla character-encoding

我有一个关于从 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/

相关文章:

php - 如何连接两个表以便我可以使用过滤器来查询两个表

php - mysql_close() : supplied argument is not a valid MySQL-Link resource

php - 时间戳和表单输入日期/时间

php - 使用PHP从MYSQL获取数据没有返回结果

mysql - 识别 SQL 中匹配次数最多的列中的 ID 对

mysql - 如何将 .sql 文件导入 toad

php - joomla 2.5! JPagination,不确定如何从 getLimitBox $option 检索值

php - 数据直接存储到mysql数据库,无需使用php设置任何验证

mysql - 有没有更有效的方法来编写这个 MySQL 查询?

php - Joomla 输出覆盖不起作用