1

Microsoft Office では別のエンコーディングが使用されていることは知っています。誰かが Office から Java テキスト パネルにテキストをコピー アンド ペーストすると、問題ないように見えます。ただし、それを MySQL データベースに保存して取得します。それは突然、ありとあらゆるくだらないラテン文字になってしまいました。

utf-8ストア前に変換しようとしましたが、うまくいかないようです。

とにかく、テキストにラテン文字があるかどうかを検出できるかどうか疑問に思うので、保存する前にアラートをポップアップしてユーザーに知らせることができます。

または、とにかく jTextField を無効にしてすべてを UTF-8 文字でのみ表示する場合は、ユーザーが単語からコピーして貼り付けると、(最初に) 見栄えがよくなるのではなく、すべてのランダム コードが自動的に表示されます。

例: ユーザーが単語に何かを入力し、jTextField に貼り付けて、文字列を直接渡し (SQL データベースが であることに注意してくださいutf8_general_ci)、それを JPanel に取得するだけで、次のようになります。

ãƒÆ'ã†â€™ãƒâ€ ã¢â‚¬â„¢ãƒÆ'ã¢â‚¬Å¡ãƒâ€šã‚â¢ãƒÆ'ã†â€™ãƒâ€šã‚â¢ãƒÆ'ã‚ ¢ãâ¢ã¢â‚¬Å¡ã‚â¬ãƒâ€¦ã‚âããƒÆ'〚ãƒâ€šã‚â¬ãƒÆ'ã†â€™ãƒâ€šã‚â¢ãƒÆ 'ãââ¢ãƒâ¢ã¢â€š

4

1 に答える 1

1

私も同様の問題を抱えています。最初に行うことは、データベースに正確に何が書き込まれているかを調べることです。これはMySQLで非常に簡単で、ログオンして実行するだけです。

SELECT HEX( column ) FROM table;

これにより、テーブルに書き込まれたバイトが表示されます。その後、私がこの目的のために作成したアプリを使用できます。MySQLから取得した16進文字列を取得し、バイトに-bフラグを使用してメインクラスに渡します。あなたは出力の全体のヒープを得るでしょう、そしてうまくいけばそれらの1つはあなたが最初に持っていたものになるでしょう。

保存されているものがわかれば、デバッグの開始点になります。

于 2012-11-07T19:17:40.940 に答える