#1 syber
今天实现一个功能时候发现了这个问题a表字符集是utf8,b表字符集是gbk,
并且在同一个action里面用到这两个表的数据。
spconfig里面默认字符集是utf8。
代码如下:
main.php
class main extends spController
{
function index()
{
$table_a = spClass('a')->findAll();
//point 1
$table_b = spClass('b')->findAll();
}
}
这种情况b的数据肯定不正常的。通过在上面代码//point 1中插入如下代码
$tmp = $GLOBALS['G_SP']['db'];
$GLOBALS['G_SP']['db']['names'] = 'gbk';
//do something
$GLOBALS['G_SP']['db'] = $tmp;
企图实例化b之前,能对连接数据库的字符集设置为gbk,
或者//point 1以后的内容修改为:
$table_b = spClass('b');
$table_b->runSQL('set names gbk');
$row = $table_b->findAll();
查询之前先设置字符集。
两种方法都不能取得表b的正常字符集数据。
像这种问题,应该怎样解决?
2010-10-24 03:04:11