假设我有两个由不同字符集编码的表:表a由utf8表,表B由latin1表示。 要查询表A上的数据,我会将连接字符集切换为utf8;表B的latin1 所以场景是:
set names utf8;
select * from A where ...;
set names latin1;
select * from B where ...;
我的第一个问题是,无论如何都要避免一直使用“设置名称......”?实际上我的两个表位于两个独立的数据库中(但我将情况简化为上面的一个数据库)并且将一个数据库的字符集转换为另一个数据库的字符集并不方便。有没有像:
select ... with connection charset utf8;
谢谢!
答案 0 :(得分:1)
不,但我不明白你为什么要这样做:你似乎考虑错误的字符集(服务器端而不是客户端)。在MySQL中,你的列可以有不同的字符集,如果你指定你的客户端(这里是PHP)正在使用的字符集(通过SET NAMES
,或更好,它的PHP等价物),这不是(真的)问题; MySQL将在客户端及其存储的数据之间进行所需的转换。
=>您需要做的唯一“SET NAMES”是声明您的应用程序正在使用的字符集。