JDK 1.6.0
MySQL 5.1
NetBeansのIDEツールを使用してSWINGのGUIアプリを勉強がてら作成しています。
JDBC接続でMYSQLにINSERTまではなんとかできましたが日本語を登録しようとすると文字化けが発生してしまいます。
登録結果:100006????????????0359210188????????????????????
この文字化けはJAVA、MYSQLのどちらで直すべきものでしょうか。
ちなみにMYSQLのMY.INIの下記の設定を変更してみましたがダメでした。
default-character-set=latin1⇒default-character-set=utf8

下記が登録時のソースです。よろしくお願いいたします。

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
String sSql = "";


// 1.JDBC Driver の登録
Class.forName("com.mysql.jdbc.Driver").newInstance();

// 2.データベースへの接続
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/MyNewDatabase", "root", "umemoto");

// 3.SQL ステートメント・オブジェクトの作成
Statement stmt = con.createStatement();
//
sSql += "INSERT INTO M_KAIIN (";
sSql += "NK_KAIIN";
sSql += ",NM_KAIIN";
sSql += ",NK_TEL";
sSql += ",NM_ADD";
sSql += ") VALUES (";
sSql += "'" + jTextField1.getText() + "'" ;
sSql += ",'" + jTextField2.getText() + "'" ;
sSql += ",'" + jTextField3.getText() + "'" ;
sSql += ",'" + jTextField4.getText() + "'" ;
sSql += ");" ;
//実行
stmt.execute(sSql);

// 6.データベースのクローズ
stmt.close();
con.close();

} catch (SQLException e1) {
System.out.println(
"SQLException: " + e1.getMessage());
System.out.println(
" SQLState: " + e1.getSQLState());
System.out.println(
" VendorError: " + e1.getErrorCode());
} catch (Exception e2) {
System.out.println(
"Exception: " + e2.getMessage());
}


}

このQ&Aに関連する最新のQ&A

A 回答 (1件)

phpMyAdminを使ってたら。

データベースを作成するときに照合順序とかで、utf8に設定できたと思います。それで、直った記憶があります。間違ってたらごめんなさい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q文字化けって英語で・・・? 

仕事で外国からのメールを受ける事がしばしばありますが、
時々名前などが文字化けしているメールを受け取ります。
本文は英語で書いてくれているのでいわんとすることは分かるのですが、
文字化けでお名前がわからないということなどを相手に伝えたいときは
英語ではどのように表現するればよいでしょうか?
また、文字化けとは英語でどういうのでしょうか?

Aベストアンサー

文字化けそのものを知っている相手(1 バイト文字の国の人)には "The page turned into garbage." と言いました。うちの会社だけだったかもしれませんが (^^;;
aqua さんが書かれているように、相手も 2 バイト文字の国の人でしたら、"Japanese fonts don't support the characters at the bottom of your e-mail. Would you mind writing it in English?" など、「日本語のフォントでは対応していない文字です。」と伝えてはいかがでしょうか。

Q【Servlet】Linux環境でSJISファイルから読み込んだデータをDB登録後の文字化け

Linux環境でSJISファイルから読み込んだデータをDBに登録するとデータが文字化けしてしまいます。

Windows環境で同じ処理を行うとDBに登録されたデータは文字化けしません。

上記文字化けの原因は、プラットフォームごとに設定されているデフォルトのエンコーディングで変換されてしまっているということでしょうか?

また、Linux環境で文字化けしないでDBにデータを登録するにはどうしたらよいのでしょうか?

【環境】
Miracle Linux
Oracle 10g

Aベストアンサー

その通りです。
特に指定しなければデフォルトエンコーディングになるので
Linux環境でSJISファイルを読み込むと文字化けします。
読み込むときにSJISとして読み込めばOKです。

String path = "sample.txt";
FileInputStream fis = new FileInputStream(path);
BufferedInputStream bos = new BufferedInputStream(fis);
InputStreamReader isr = new InputStreamReader(bos, "Shift_JIS");

基本的にはこれでOKなのですが、SJIS-日本語EUCの変換の場合、
SJIS側のマッピングの関係で、以下の文字が化けることがあります。

\ 0x815F 0xFF3C[FULLWIDTH REVERSE SOLIDUS]
~ 0x8160 0x301C[WAVE DASH]
∥ 0x8161 0x2016[DOUBLE VERTICAL LINE]
- 0x817C 0x2212[MINUS SIGN]
¢ 0x8191 0x00A2[CENT SIGN]
£ 0x8192 0x00A3[POUND SIGN]
¬ 0x81CA 0x00AC[NOT SIGN]

参考URL:http://java-house.jp/ml/archive/j-h-b/014452.html#body

その通りです。
特に指定しなければデフォルトエンコーディングになるので
Linux環境でSJISファイルを読み込むと文字化けします。
読み込むときにSJISとして読み込めばOKです。

String path = "sample.txt";
FileInputStream fis = new FileInputStream(path);
BufferedInputStream bos = new BufferedInputStream(fis);
InputStreamReader isr = new InputStreamReader(bos, "Shift_JIS");

基本的にはこれでOKなのですが、SJIS-日本語EUCの変換の場合、
SJIS側のマッピングの関係で、以下の文...続きを読む

Q海外からの中国語や英語のメールやSMSを文字化けなしに受信するには

海外からの中国語や英語のメールやSMSを文字化けなしに受信するには

海外から発信される中国語や英語のメールやSMSを受け取る場合、文字化けせずに受け取るにはどうすればよいでしょうか。

文字化けは携帯電話の機種によって、異なりますか?また、海外からのメールやSMS発信の場合、どんなフォントやシステムを使えば、日本の携帯に文字化けなしに送れますか。

また、海外のPCや携帯から日本語で送信されたメールが、携帯に届くと、日本語の文章なのに、文字化けしていることがあります。この問題を解決するには、相手にどんなフォントやシステムを使って文章を書いてもらえばいいでしょうか。

おわかりになる点がひとつでもありましたら、教えて下さい。お願いします。

Aベストアンサー

中国語で作成された物はともかくとして
相当変った環境でない限り
英語で作成された物が文字化けするとは思えません
(ですので以下の話は中国語限定)

文字化けする際は使っている機種によって違うでしょう
中国語が表示されない機種(フォントがない機種)に
中国語で送っているわけですから

>海外のPCや携帯から日本語で送信されたメールが
>携帯に届くと、日本語の文章なのに、文字化けしていることがあります。
>この問題を解決するには、相手にどんなフォントやシステムを使って文章を書いてもらえばいいでしょうか。
これは途中のサーバ経路で日本語対応などしていないと化ける可能性があります
その場合どうしようもありません

日本語で書いていてもメールのエンコード設定や使用している
フォントによっては化けることがあります

文字化けの理由については幅が広いのでメールヘッダ見たり中継サーバ
確認したりしないと一概に  これが原因  ということはいえません

QjavaでのOracleのデータ登録の際の文字化け

Windows2000上でjavaでの開発を行っています。

javaからOracle(OSはUnixだと思います)へデータを更新する際
「―」(全角のダッシュ」が「?」となって登録されてしまいます。
SQLを発行する時は「―」は文字化けしていません。
処理終了後テーブル内容を確認すると
「?」となって登録されています。
CSE(Common SQL Environment)でデータを更新したところ
文字化けは起こらず正しく「―」が登録されました。

javaで何か文字コード変換等を行う必要があると思うのですが
方法がわかりません。

ご存知の方がいらっしゃいましたら、よろしくお願いします。

Aベストアンサー

↓これでは?

参考URL:http://otn.oracle.co.jp/software/tech/java/jdbc/nlsalart/nlsalart.html

Q英語サイトの文字化けで困ってます

Macで英語のサイトを見ると文字化けすることがあって困っています。
何か重要なフォントを消してしまったのでしょうか?

例えば英語のウィキペディアのサイトが文字化けします。
http://en.wikipedia.org/wiki/Main_Page
しかし英語のヤフーは文字化けしてません。
http://m.www.yahoo.com/

Fierfox、Safariどちらで見ても同じことがおこります。
Mac 10.4.11です。

よろしくお願いいたします。

Aベストアンサー

#2です。
解決してよかったですね。

>FontBookでHelvetica.dfontが最優先に使われるように設定するにはどうしたらよいのでしょうか?
この方法は、Font BookでHelveticaの項目に表示される「Helvetica.dfont」以外のフォントを無効にします。
Font Bookを起動し、「フォント」列の中からHelveticaを選択し、右向きの三角形をクリックして内容を表示します。
フォント名の右側に何も印が付いていないものが現在使われているフォントです。そのフォントを選択し、右クリックして、使用停止を選択すれば、そのフォントが無効になります。フォントメニューから「フォント情報を表示」を選択すると、そのフォントのファイル名などが表示されますので、どこにインストールされているフォントなのかを確認して作業してください。

しかし、、
そうすると、Illustratorなどでは、他のフォントを使用できなくなり、いちいちフォントの有効、無効を切り替える必要が生じます。さきほどは、何が原因かを探るために、この方法を紹介しましたが、現実的ではありません。ですので、別の方法を考えたほうがいいかと思います。

Illustratorなど、アドビシステムズ社のソフトウェアだけで使用するフォントでしたら、お勧めとしては、
HD>ライブラリ>Application Support>Adobe>Fontsフォルダの中に使用したい他のヘルベチカ系フォントを入れてください。
そうすれば、Illustratorなど、アドビシステムズ社のソフトウェアでだけ、他のヘルベチカ系フォントが使用できるようになります。

もう1つの方法は、置き換わっているフォントを特定し、そのフォントを使用しないようにする方法です。
元の状態(文字化けしている状態)に、フォントを戻します。
文字化けしているページに移動し、文字化けしている部分の文字を数文字コピーします。
テキストエディットなどにコピーし、そのフォントが何であるかを特定します。
特定したら、そのフォントだけ、フォントブックで無効にします。
再度、文字化けしているページを表示し、まだ文字化けしているようなら、また同じ作業を繰り返します。

#2です。
解決してよかったですね。

>FontBookでHelvetica.dfontが最優先に使われるように設定するにはどうしたらよいのでしょうか?
この方法は、Font BookでHelveticaの項目に表示される「Helvetica.dfont」以外のフォントを無効にします。
Font Bookを起動し、「フォント」列の中からHelveticaを選択し、右向きの三角形をクリックして内容を表示します。
フォント名の右側に何も印が付いていないものが現在使われているフォントです。そのフォントを選択し、右クリックして、使用停止を選択すれば、そ...続きを読む

Qjspから取り込んだ全角文字をdbへ保管すると起こる文字化け

サーブレットの勉強をしています。
java初心者です。

webから全角文字を入力させてaccessにinsertすると
文字化けしてしまいます。

どのように回避したらいいでしょうか?
教えてください。

掲示板を作っています。もう少しでできあがりそうです。。

Aベストアンサー

参考URLをご覧ください。
風間さんが書かれた有用なサイトがあります。

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

Q自作の英語版ホームページが文字化け

自作の英語版ホームページが文字化けしていないかどうか
確認するために、ブラウザで「表示」→「エンコード」を
変更して見たところ、「自動選択」では全く問題がなかったのですが、「西ヨーロッパ言語」(Windows)では、若干文字化けしていました。
英語版の場合、英語圏で文字化けすることなく見ることができれば良いと思うのですが、ブラウザで確認する場合は
エンコードを何に変更して見るのが最も適当でしょうか。

Aベストアンサー

英語圏では一般的にISO8859-1が標準的に使用されているようです。METAタグには以下のように記述します。
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

METAタグで記述しておけばブラウザでエンコードを切り替えなくても自動的に判別してくれます。
文字化けしやすい例としては全角のスペースですね。
多国語に対応したエンコードとしてはUTFがあります。

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

javaで日本語が文字化けしてしまいます。eclipseからjavaクラスを実行する場合、どのようなencodingの式を記述すればいいでしょうか?

コマンドプロンプトでjavac -encoding SJIS クラス名.javaと入力すれば日本語の文字化けを解決できますがeclipseからの実行で日本語文字化けを避けられません。
コードを記述するのだと思いますが、どのように記述すればいいのでしょうか?


eclipseの設定で文字コードを変更できるみたいですが、SJISには変更できませんでした。
何か解決策はないでしょうか?
よろしくお願いします。

Aベストアンサー

すみませんが、ご質問の内容では状況が殆ど判りません。

ソースコードの表示内容が文字化けしているという意味ですか?
ファイルなりコンソールへ出力した内容が文字化けしているという意味ですか?
使用環境は?

これでは何とも回答できないのですが…。
無理矢理推測すると、Windows環境でソースコードが化けている状態だと思われるので
それであれば添付画像のように、
文字コードはMS932(Microsoftの独自拡張SJIS)
改行コードはWindowsを指定すればいいのですが。

Q「文字化け」を英語で…。

ある海外の方と知り合い、文通をする事になりました。
相手の方が住所を教えて下さったのですが、
そこだけ文字化けしていたので読めませんでした。

「文字化けしているのでもう一度メールを送ってくれませんか?」
と言いたいのですが、『文字化け』は英語で何と言うのでしょうか?

Aベストアンサー

文字化けはfunny characters // garbled characters です。

下記の文章で伝わるかと思います。
I got a garbled e-mail from you. Could you e-mail me again?

Qmysqlから取得した文字の文字化け

mysqlでchar(20)に日本語を登録しました。
mysql上では当然select KUDAMONO from SHOHI_TABLE;とすると
みかん
りんご
かき
いちご
というようにコマンドプロンプト上で表示されます。

このデータをjavaでで取得すると文字化けを起こします。

while(rset.next()){
System.out.println(rs.getString("KUDAMONO"));
}

半角データの場合はgetString("列名")で文字化け起こしません。
数字データについてもgetInt("列名")で文字化け起こしません。

原因はなんでしょうか?

Aベストアンサー

mysqlのコマンド入力画面から、statusと打って、
文字コードを確認してみてください。

このとき、javaのソースコードの文字コードと
mysqlの文字コードが一致していない場合、
文字化けが起こります。

半角英語や数字に変化がないのは、文字コードに依存しないためです。
日本語は文字コードによって標記方法が異なるので。


人気Q&Aランキング

おすすめ情報