• 締切済み

JavaプログラムからDBに書き込みをしているのですが…

入力値を受け取り、Javaプログラムでその入力値 をDBに書き込むのですが、漢字と特殊文字の一部 が文字化けしてしまいます。 対策として『予』という文字なら『予\』で登録すれば よいのはわかるのですが、毎回プログラムで入力値をチェックし後ろに\記号をつける方法しかないのでしょうか? DBはmysqlを使用していて、文字コードはsjisを指定しています。

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • thelma
  • ベストアンサー率66% (20/30)
回答No.1

「入力値」が何から入力されているのか、など、ご質問の状況がわかりませんが、 Javaでは、プログラム内での処理にUnicodeを使うため、 入力値を受け取るところと、データベースに書き込むところと、2箇所で文字化けが発生する可能性があります。 入出力の文字セットを正しく把握して、java.ioでストリームを扱う時などに正しいUnicodeコンバータを使うようにすれば、文字化けは回避できるはずです。 参考URLは主にサーブレットとJSPの文字化けに関するものですが、そういうご状況でなかったとしても、発生原因など一部参考になるのではと思います。

参考URL:
http://www.ingrid.org/java/jserv/i18n/corruptedchar.html

関連するQ&A

  • javaで日本語が文字化けしてしまいます。eclipseからjavaク

    javaで日本語が文字化けしてしまいます。eclipseからjavaクラスを実行する場合、どのようなencodingの式を記述すればいいでしょうか? コマンドプロンプトでjavac -encoding SJIS クラス名.javaと入力すれば日本語の文字化けを解決できますがeclipseからの実行で日本語文字化けを避けられません。 コードを記述するのだと思いますが、どのように記述すればいいのでしょうか? eclipseの設定で文字コードを変更できるみたいですが、SJISには変更できませんでした。 何か解決策はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • CakePHPでDBに入れる際文字化け

    お世話になります。 現在CakePHPで携帯サイトを作成しているのですが、 通常出力は問題ないのですが、 フォームからDBに入れる際に文字化けが起こります。 ■現在行っている設定 charset=SJIS ファイルの文字コード:SJIS CakePHPのdatabese.phpのエンコード設定:SJIS MySQL の文字セット: UTF-8 Unicode (utf8) ご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • phpMyAdminでCSVファイルをインポートするが文字化け

    MYSQL初心者です。 教えてください。御願いします。 phpMyAdminにて、漢字コードが「Sjis」のCSVファイルをLinuxサーバのMySQLにインポートするのですが、文字化けを起こしてしまい、旨く変換出来ません。多分、「utf8」に変換されているようです。勿論変換時の漢字コードは「sjis」にしております。どなたか助けて下さい。宜しく御願いします。

  • MySQLの文字コードについて

    こんばんは。今、PHP+MySQLの勉強をしているのですが、PHPとMySQLをSJISで保存して接続をすると文字化けはしないのですが、他の文字コードだと一部文字化けをしてしまいます。 どうやったら、他の文字コードでも化けないようにすればよろしいのでしょうか?ちなみにPHPは5.2/Apache2.0/MySQLは5.0を使っておりmy.iniの文字コード設定はデフォルトでSJISにしています。 よろしくお願いします。

  • DBの文字コード切り替え

    MySQL 5.6 なのですが・・・・ DBの文字コードはDB作成後にデータを登録した後に、途中で文字コードを変更した場合、DBに登録済みの全角文字はどうなりますか? 文字化けする場合、変換ツールのようなものはあるのでしょうか? また文字コードの変更は ini ファイルを変更してMySQLを再起動するだけでいいのでしょうか?

    • ベストアンサー
    • MySQL
  • Javaで、画面入力したデータをファイルに書き出すプログラムを作成して

    Javaで、画面入力したデータをファイルに書き出すプログラムを作成しています。 書き出したファイルを他のシステムへ渡す為、漢字コードの取り扱いについて調査しています。 MS932では、ローマ数字等はNEC拡張文字とIBM拡張文字の領域に別々にコード番号があります。 MS-IMEでWindows上でローマ数字を打つとNEC拡張文字で入力され、Javaのプログラムが入力を受け取ると内部で自動的にUnicodeへ変換されて、NEC拡張文字とIBM拡張文字区別無く同一のコードになります。 質問1:その後、Javaプログラムでファイルに"Windows-31J"指定で出力する場合、NEC拡張文字とIBM拡張文字のどちらで出力されるのでしょうか。 質問2:ファイルへ出力する時に、NEC拡張文字やIBM拡張文字を指定することはできるのでしょうか。 よろしくお願いいたします。 余談ですが、インターネット上には「NEC拡張文字」という言葉の他に、「NEC選定文字」や「NEC特殊文字」などの書き方があって同じものを指すのか別の物を指すのか、初心者としてはわかりにくく迷わされるところです。

    • ベストアンサー
    • Java
  • java ○○といつもどおり入力すると文字化けしてしまいます。

    Javaの勉強のため、本を見ながらプログラムを入力しています。今、さっきまで、別の本では全く問題なくできていました。ところが、本を変えたら、javacはいいのですが、java ○○といつもどおり入力すると文字化けしてしまいます。TeraPadを使っていますので、文字コードを見ると初期文字コードがEUC保存文字コードが自動になっていたので、両方ともShift-JISに直しました。しかし、java ○○ と、入力すると(結果が)文字化けしてしまいます。わかる方、教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • PHP5+Apache2+MySQLの設定について

    PHP5とAPACHE,MySQLの文字コードについて聞きたいのですが、文字コードはすべて同じものを使わなければならないのでしょうか。 やはりSJISで統一しなければならないのかと思い質問させていただきました。 あとMySQLを使っていて購入した参考書には漢字入力ができたのですが、インストールが上手くいってないか文字コードの設定だかで漢字を入力できないでいます。 初歩的なことで申し訳ないのですがよろしくお願いします。

    • ベストアンサー
    • PHP
  • MySQL文字コード

    DB情報をHTMLで表示する場合に、mb_convert_encoding()で指定する文字コード MySQL5.1 PHP5 HTML - shift_jis MySQL の文字セット UTF-8 Unicode (utf8) MySQL の接続照合順序: ujis_japanese_ci フィールドの照合順序 ujis_japanese_ci PHPプログラムでDB情報取得後にSJISに変換 mb_convert_encoding($String, "SJIS", "●●●"); ●●●の文字コードを何を指定すればいいのかがわかりません。 EUCを書くとうまくいってるような気もしますが、なぜEUCでうまくいく のかもわかりません。 ご教授下さい。

    • 締切済み
    • PHP
  • VB2005でJIS拡張漢字の各文字コードを取得する方法

    ある関数に文字列を渡して各文字コードを取得するプログラムを作成しようとしています。 基本的な文字のコードは取得できるのですが、JIS拡張漢字のほとんどが正しく取得できません。 失敗している文字は内部的に「?」(3F)となってしまいます。 例:拡張漢字のコード値(SJIS:81B2)を変換するとコード値が「3F」になってしまう。(テキストエディタなどで文字化けすると「?」に化けるのと同じなのかな?) 正しく文字コードを取得する方法をご存知の方、またヒントなどありましたらよろしくお願いします。 【環境】WindowsXP     VisualBasic2005 【プログラムの流れ】例:SJISコードを取得する場合 文字列を受取る→1文字取得→System.Text.EncodingでSJIS指定のバイト型配列文字に変換(文字コードを取得)

専門家に質問してみよう