utf8
すべてのテーブルの文字セットを持つ mysql データベースがあります。SQLDeveloper を使用して、最新の JConnector JDBC ドライバーでデータベースにアクセスしてクエリを実行しています。
ブルガリア語を含むSELECT 'Варна';
と同等の単純なクエリを実行すると、SQLDeveloper は を返します。これにより、ブルガリア語を使用したデータベースからの選択が returnになります。これは、それらの句 (ブルガリア語を含む)がデータベース内のブルガリア文字と一致しないためです。(選択でブルガリア語がまったく使用されていない場合、SQLDeveloper は完全に正しい値を返し、クエリの結果として返されたブルガリア語を正しく表示します。)SELECT 'Варна' from DUAL;
'?????'
NULL
where
uft8
Preferences -> Environment -> Encoding
SQLDeveloperのは現在 に設定さUTF-8
れていますが、そこにリストされている適用可能なエンコーディングを事実上すべて試しましたが、最も単純なクエリでさえSELECT 'Варна' from DUAL;
正しい値を返しませんВарна
。
NLS_LANG
これが原因かもしれないと考えて、変数の設定を調べましたが、役に立ちませんでした。(おそらくそれが鍵ですが、実際に適切に構成することはできません)。
編集:問題を再現して視覚化するには(説明が不十分だった可能性があることに気づきました)、SQLDeveloperに移動してmysqlデータベースに接続し、クエリを実行しますSELECT 'Варна' from DUAL;
。
Edit2: 説明。
Edit3: @tenhouse が残したコメントが示すように、これはバグである可能性があります。
Edit4: 以下にコメントとして記載されているように、上記のクエリは、SELECT 'Варна' from DUAL;
MySQL Workbench で変更や設定をいじることなく、完全に正常に機能します。
編集 5: 問題に対する回答がまだないため、何か改善できると思われる場合は、タイトルやタグを自由に修正してください。
Edit6: これは本当にバグだと思いますか? 正確に報告する場所を誰か教えてもらえますか - それは JConnector または SQLDeveloper 関連のバグですか? SQLDeveloper のバグとして報告する必要があると思いますが、時間を無駄にする前に確認を取りたいと思います。
Edit7:答えを期待して、さらに明確にしようとしました。
Edit8: (重要!)現在のデータベースは Linux (Ubuntu 12.04、MySQL 5.5.28) サーバーでホストされています。ただし、新しい Windows マシンに MySQL をインストールしてutf8
そこにデータベースを作成すると、SQLDeveloper を介したクエリは想定どおりに機能し、SELECT 'Варна' from DUAL;
実際にはВарна
. 誰かがこれを確認してもらえますか?