代码之家  ›  专栏  ›  技术社区  ›  Yousf

在mysql查询中转换字符集

  •  2
  • Yousf  · 技术社区  · 16 年前

    我有一个关于从mysql查询内部转换字符集的问题。

    我有两个数据库。一个用于网站(joomla),另一个用于论坛(ipb)。 我在joomla内部进行查询,默认情况下是“set names utf8”。 我想查询论坛数据库中的一个表。一个叫做“ibf_主题”的表。此表具有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

    3 回复  |  直到 12 年前
        1
  •  2
  •   chris    16 年前

    您可以打开两个数据库连接,一个到joomla,一个到ipb。您将使用更多的资源,但这将使您的代码更易于阅读,并且您可以在数据库设置中完成所有配置(字符集等)。这也将使以后的迁移更容易,以防您的情况发生变化-您不需要通过代码删除所有 SET NAMES .

        2
  •  0
  •   Your Common Sense    16 年前
    $query = "SET NAMES UTF8";
    $db->setQuery($query);
    $db->query();
    
    $query = "select id, title from other_database.ibf_topics";
    $db->setQuery($query);
    $db->query();
    
        3
  •  0
  •   camurcu    12 年前

    /* 可以在数据库连接后设置字符集 */

    header('content-type:text/html;charset=utf-8');

    /* 连接后 */

    mysql_query(“设置名称utf8”);

    /* 或 */

    mysql_query(“设置字符集utf8”);

    /* 或 */

    mysql_query(“set collation_connection='utf8_general_ci'”);

    推荐文章