我正在使用mysql DB。 DB是amazone RDS DB。
执行此查询时:show global variables like '%character%';
我得到以下结果:
但是当我执行这个查询时:show variables like '%character%';
我得到了这个结果:
如您所见,character_set_results为空。我尝试了以下查询,没有任何更改空值:
ALTER DATABASE myDB CHARACTER SET utf8;
ALTER DATABASE myDB CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER DATABASE myDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
SET CHARACTER_SET_RESULTS=UTF8
SET NAMES 'utf8';
SET CHARACTER SET 'utf8';
SET session CHARACTER_SET_RESULTS = utf8;
据我所知,第二个查询返回会话参数。这会影响我得到的结果吗?
我有两台机器。开发机器,我用eclipse运行应用程序(这是一个带有hibernate的java应用程序),另一个是部署机器。在开发机器上一切正常,但在部署机器上有时我会得到????或从DB获取数据时的其他奇怪字符。
两台机器都连接到同一个DB,数据在db本身中存储得很好。
连接网址也是jdbc:mysql://myDB:3306/myApp?autoReconnect=true&useUnicode=true&createDatabaseIfNotExist=true&characterEncoding=utf-8
。
任何可能导致这种情况的想法?
答案 0 :(得分:0)
多个问号通常来自:
INSERTing
中文(或任何非西欧文字)。SET NAMES utf8
声明客户端字节是utf8编码的(正确)。CHARSET latin1
。 < - 这就是问题所在。请提供SHOW CREATE TABLE
以确认上述假设。
如果您正在获得其他奇怪的字符",请提供:
SELECT col, HEX(col) FROM ...
显示"奇怪字符"。
的存储内容示例