使用SQLDeveloper查询mysql数据库不会返回正确的值

YEA*_*lyn 9 mysql encoding oracle-sqldeveloper

我有一个mysql数据库,其中utf8包含所有表的字符集.我正在使用SQLDeveloper使用最新的JConnector JDBC驱动程序访问和查询数据库.

当执行简单查询(例如SELECT '?????';等效于SELECT '?????' from DUAL;包含保加利亚语言的查询)时,SQLDeveloper将返回'?????'.这使得我使用保加利亚语言返回的数据库中的选择NULL,因为他们的where子句(包含保加利亚语言)uft8与数据库中的保加利亚字符不匹配.(当select不使用保加利亚语时,SQLDeveloper会返回完全正确的值,并显示正确查询返回的保加利亚语言.)

Preferences -> Environment -> Encoding在的SQLDeveloper目前被设定为UTF-8,但我试图在那里,即使是最简单的查询上市几乎所有适用的编码SELECT '?????' from DUAL;还回不回正确的值?????.

我已经研究过设置变量NLS_LANG,认为这可能是原因但无济于事.(也许它毕竟是关键,但我无法正确配置它).

编辑:为了重现问题并将其可视化(因为我意识到我可能解释得很差)只需进入SQLDeveloper并连接到mysql数据库并执行查询SELECT '?????' from DUAL;.

编辑2:澄清.

编辑3:正如@tenhouse留下的评论所示,这可能是一个错误.

编辑4:如下面作为评论所述,上述查询SELECT '?????' from DUAL;完全正常,没有任何修改和/或设置在MySQL Workbench上.

编辑5:如果您觉得可以改进某些内容,请随时更正标题和/或标签,因为仍然无法解决问题.

编辑6:到现在我可以假设它真的是一个错误吗?任何人都可以告诉我在哪里报告它 - 它是一个JConnector或SQLDeveloper相关的错误.我认为我必须将其报告为SQLDeveloper错误,但我宁愿在可能浪费时间之前得到确认.

编辑7:我希望得到一个答案,试图进一步澄清它.

Edit8 :(重要!)我当前的数据库托管在linux(Ubuntu 12.04,MySQL 5.5.28)服务器上.但是,如果我在一台全新的Windows机器上安装MySQL并在utf8那里创建一个数据库,那么通过SQLDeveloper查询就可以正常工作,SELECT '?????' from DUAL;实际上会返回?????.有人可以确认一下吗?

小智 0

您可以尝试这样的命令::: ALTER DATABASE CHARACTER SET WE8ISO8859P5;

更改字符集后请重新启动DB。

更多详细信息请参阅此链接,其中解释了不同语言所需的编码

http://www.csee.umbc.edu/portal/help/oracle8/server.815/a67789/ch3.htm