我有一个 mysql 数据库,其中utf8
包含所有表的字符集。我正在使用 SQLDeveloper 通过最新的 JConnector JDBC 驱动程序访问和查询数据库。
当执行一个简单的查询,例如包含保加利亚语的SELECT 'Варна';
等价于时,SQLDeveloper 返回. 这使得从我使用保加利亚语返回的数据库中进行选择,因为它们的子句(包含保加利亚语)与数据库中的保加利亚语字符不匹配。(When the select doesn't use Bulgarian language at all SQLDeveloper returns completely correct values and displays the Bulgarian language returned as a result of the query correctly.)SELECT 'Варна' from DUAL;
'?????'
NULL
where
uft8
Preferences -> Environment -> Encoding
SQLDeveloper 中的当前设置为,UTF-8
但我已经尝试了其中列出的几乎所有适用的编码,即使是最简单的查询SELECT 'Варна' from DUAL;
仍然没有返回正确的值Варна
。
我已经研究过设置变量NLS_LANG
,认为这可能是原因,但无济于事。(也许它毕竟是关键,但我无法正确配置它)。
编辑:为了重现问题并将其可视化(我意识到我可能解释得不好),只需进入 SQLDeveloper 并连接到 mysql 数据库并执行查询SELECT 'Варна' from DUAL;
。
编辑2:澄清。
Edit3:正如@tenhouse 留下的评论所示,这似乎是一个错误。
Edit4:正如下面的评论所述,上面的查询SELECT 'Варна' from DUAL;
工作得很好,没有任何修改和/或在 MySQL Workbench 上摆弄设置。
Edit5:如果您认为可以改进某些内容,请随时更正标题和/或标签,因为问题仍然没有答案。
Edit6:现在我可以假设它真的是一个错误吗?任何人都可以告诉我在哪里报告它 - 它是与 JConnector 还是 SQLDeveloper 相关的错误。我认为我必须将其报告为 SQLDeveloper 错误,但我宁愿在可能浪费他们的时间之前得到确认。
Edit7:试图进一步澄清它,希望得到答案。
Edit8:(重要!)我当前的数据库托管在 linux(Ubuntu 12.04,MySQL 5.5.28)服务器上。但是,如果我在新的 Windows 机器上安装 MySQL 并在utf8
那里创建一个 db,则通过 SQLDeveloper 进行查询按预期工作,SELECT 'Варна' from DUAL;
实际上返回Варна
. 有人可以确认一下吗?