• ベストアンサー

MySQL4.1.7 文字化けについて

MySQLのバージョンを4.0.21→4.1.7にアップグレードしたところ、文字化けが発生してしまいました。 【状況】 1.MySQL4.1.7をインストールウィザードを使用してインストール 2.CREATE DATABASE でデータベース作成 3.CREATE TABLE でテーブル作成 4.INSERT でデータ追加 5.SELECT でデータ抽出←ここで文字化け(日本語が全部‘?’になっている) OSはWinXPです 色々調べてはいるんですが、わかりません。 何か情報ありましたらお願いします。

  • MySQL
  • 回答数3
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんにちは。 とりあえずよかったです。 JSPからの文字化けという事なので、 1.JDBCの接続文字列のcharacterEncodingはsjisですか? 2.characterEncoding=MS932としてみてもダメですか? 以下、怪しい点を列挙 1.JSPページの文字コード 2.HttpServletResponseのsetContentType 3.クラスファイルのコンパイル時の-encodingオプション 4.worksディレクトリにあるファイルの削除 5.Apacheのデフォルトエンコーディングの設定 だそうです・・・。 どうですか? (^^ゞ

b-u-z-z
質問者

お礼

taka451213さん、ありがとうございます。 ご指摘頂いた箇所の確認および実施をしてみましたが うまくいきませんでした。 私も知識が無いなりに調べまして、sevletのコーディングに以下の対応をして何とか文字化け解消に成功しました。 str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect"); ※str:MySQLから取得して文字化けしてしまうresultsetの項目 でも気になるのですが、MySQLから取得したデータに対して必ず毎回、このコーディングを記述しないといけないのか?そもそも、この対応がスタンダードなのか?です ちょっとMySQLよりもJavaよりの話(?)のような気がしますので、もう少し調査して不明な場合、Javaのほうで質問したいと思っています。 どうもありがとうございました。

その他の回答 (2)

回答No.2

こんにちは。 とりあえず、設定ファイルを直接確認してみてください。 my.iniだったかな・・・? [mysqld] default-character-set=sjis の記述はありますか? (^^ゞ

b-u-z-z
質問者

お礼

taka451213さん、ありがとうございます。 my.iniを見たところ、default-character-set=sjis の記述はありました。 全く状況が変わらなかったので、MySQL4.1.7を何度か再インストールしたところ、 MySQL自体の文字化けは発生しなくなりました。 ですが、新たな問題が・・・。 MySQLからJavaServlet&JSPでデータの抽出→ブラウザ表示やデータ登録などさせてみると、 文字化け(‘!’や‘)’など)が発生してしまいました。 私自身まだ調査途中ですが、何か情報がありましたら、宜しくお願いします。

回答No.1

こんにちは。 文字コードの指定が間違ってませんか? default-character-set=何か を記述してますか? (^^ゞ

b-u-z-z
質問者

お礼

taka451213さん、回答ありがとうございます。 文字コードの指定ですが、WinMySQLAdminを使って default-character-set=sjis にしています。 4.0.21の時も同様に設定して、MySQL自体で文字化け することはなかったんですが・・・。

関連するQ&A

  • MySQLの文字化け

    WindowsServerでPHPとMySQLで作成したプログラムを動かしています。 PHPからINSERTでMySQLに登録すると環境依存文字(「(株)・(有)など)が「?」になってしまいます。 PHPからSELECTでブラウザ上に表示させると文字化けはしていませんが、phpMyAdminで確認すると「?」になっています。 このデータベースの内容を他のサーバーに移すときに、phpMyAdminからエクスポートまたはmysqldumpすると「?」のままエクスポートして、他のサーバーでインポートしても当然「?」になってしまいます。 環境依存文字が文字化けしない、あるいは他のサーバーでも環境依存文字をそのまま移行できるようにはできないでしょうか。 よろしくお願いします。 PHPはEUC-JP、データベースはujisで作成しています。 INSERTの直前でSET NAMES UJISを実行しています。

    • ベストアンサー
    • MySQL
  • MySQL初心者

    -mysql CREATE DATABASE testdb; use testdb; CREATE TABLE car_table(id int(10),name varchar(50)); INSERT INTO car_table VALUES (2,'乗用車'); INSERT INTO car_table VALUES (3,'オープンカー'); INSERT INTO car_table VALUES (4,'トラック'); SELECT * FROM car_table; これで間違ってるとは思わないんですが、なぜか ERROR 1049(42000): Unknown database 'testdb・・ とでます。なぜなんでしょうか?全然わかりません。 何かの設定ミスかなにかでしょうか?

    • ベストアンサー
    • MySQL
  • MySQLが文字化けしてしまう

    MySQLが文字化けしてしまう 現在、PHPとMYSQLを使ってデーターベースに画像をアップするプログラムを作っています。 http://websegment.net/2010/09/05/php-mysql-blob/ のサイトのプログラムでまず作成してみたところデーターベースへの 登録はうまくいったのですが、ターミナルでテーブルを確認したところ文字化けしていました。 フィールドのfile、size辺りで文字化けしてしまっているようです。 どうすれば、文字化けが直るのでしょうか? 教えてください。

    • ベストアンサー
    • PHP
  • 文字化けが解消できません…MySQL5.2.1

    OS:WINDOWS XP MySQL5.2.1 Apache2.2.4 php-5.2.1 文字(EUC-JP使用) PHPからテーブルにINSERTした場合、echoできちんと表示できます。 しかし、コマンドプロンプトを開いてテーブルを見ると、 PHPからINSERTした日本語が文字化けしています。 コマンドプロンプトにINSERTで日本語を入力すると、 Query OK と表示されますが、SELECT * FROM で内容を表示すると、 空白で何も表示されません(PHPのechoでも表示されません) 色々調べてみたのですが…どうしても解決できません… 【my.ini】 [client] port=3306 default-character-set=ujis [mysql] default-character-set=ujis [mysqld] port=3306 basedir="c:/mysql5/" datadir="c:/mysql5/data/" default-character-set=ujis init-connect="SET NAMES ujis" skip-character-set-client-handshake [mysqldump] default-character-set = ujis 【SHOW VARIABLES で確認した文字コード】 character_set_client ujis character_set_connectioon ujis character_set_database ujis character_set_filesystem binary character_set_results ujis character_set_server ujis character_set_system utf8 試しに mysql> SET NAMES ujis と入力したりしてみましたが 文字化けしたままになっております。 SHOW CREATE DATABASE と SHOW CREATE TABLE で表示された CHARACTER SETは ujis でした。 my.iniの character-set を ujis に設定した場合、 日本を表示させることはできないのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • mysqlの文字化けについて

    さくらサーバーのプレミアムプランで、MYSQLが文字化けを起こして困っています。 MYSQL5.1、データベースの文字コードはUTF8です。 UTF8でエンコードされたPHPプログラムからデータをINSERTすると文字化けを起こします。 ハッスルサーバーで同じ環境を再現すると、文字化けは起こしません。 違いは、ハッスルサーバーでは、「character_set_server utf8」になっているのに対して、 さくらサーバーでは、「character_set_server ujis 」となっています。 この、ujisをutf8に変更すれば解決しそうに思うのですが、変更の仕方がわかりません。 アドバイス頂けましたら、幸いです。

  • MySQLから取り出したものを3つに分ける

    MySQLに以下のようなSQLを打ちました。 create table table_list( id int, task varchar(255) ); insert into table_list values(1,'ほげほげ1-1'); insert into table_list values(1,'ほげほげ1-2'); insert into table_list values(2,'ほげほげ2-1); insert into table_list values(2,'ほげほげ2-2'); insert into table_list values(3,'ほげほげ3-1'); そして、空のdiv要素が3つあります。 このデータベースからidの数値別に、div要素へtaskの文字列を入れたいのですが、どうすればいいのでしょうか? SQLで「select * from table_list」をやってからtaskを取り出すのか、3回SQLで「select task from table_list where id=1」のようにするのがよろしいんでしょうか?

    • ベストアンサー
    • PHP
  • MySQL初心者で困っています

    MySQL初心者です。 「やさしいJava活用編」を参考に,MySQLデータベース表を作成しました。 ソースは以下の通りです。 ---[Sample01.txt]----- CREATE DATEBASE sample01; use sample01; CREATE TABLE smpl_table (id int(10), name varchar(50)); INSERT INTO smpl_table VALUES (2, 'い'); INSERT INTO smpl_table VALUES (3, 'ろ'); INSERT INTO smpl_table VALUES (4, 'は'); SELECT * FROM smpl_table; ---ここまで----- 以下が実行コマンドです -------------- mysql> \. C:\Sample01.txt 以下が実行結果です。 -------------- ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATEBASE sample01' at line 1 ERROR 1049 (42000): Unknown database 'sample01' ERROR 1046 (3D000): No database selected ERROR 1046 (3D000): No database selected ERROR 1046 (3D000): No database selected ERROR 1046 (3D000): No database selected ERROR 1046 (3D000): No database selected 以上のような結果が返ってきて正しく実行できません。 MySQLについて初心者なので 詳しいことがわからず困っています どなたかご教授お願いします。

  • MySQL4.0 UTF-8 での文字化け

    こんにちは MySQL4.0 & PHP4.3 でHTMLは文字コードUTF-8で記述しています。 MySQL4.0の文字コード設定はレンタルサーバーのため不明ですが、 phpMyAdminで、utf-8にてデータを入力しました。 select文でMySQLのデータを拾ってくると文字化けはおきないのですが PHP経由でPOSTされた値を使ってinsertやupdateをかけると文字化けしてしまいます。phpMyAdmin上でも文字化けしていますが、phpMyAdminをEUC-JPにすると、入力した文字が文字化けせずに表示されます。 (が、すでに入っているデータは文字化けします、、、、) 入力画面は metaでUTF-8宣言をしており、ブラウザ(IE)上でエンコードを確認するとUnicode(UTF-8)になっています。4.1みたいにset names を指定するとうまくいくかな?と思ったのですが、やっぱり4.0なので結果は変わらず、でした。PHPのスクリプトそのものは、UTF-8で記述しているのですが、、、、 どういった項目をみなおせばいいのでしょうか?

    • ベストアンサー
    • MySQL
  • mysqlの文字化けが治せません・・・;;

    現在、MYSQL+PHPを勉強中の初心者なのですが PHPにて作成したフォームデータをレンタルサーバ上のデータベースへと入力するプログラムを作成したのですが送られた日本語データがphpmyadminで確認すると全て文字化けしてしまいます。 また、データベースのデータをブラウザ上に表示するPHPプログラムでもブラウザ上では文字化けしています。 おそらく、MYSQLの文字コードの指定がまずいとおもうのですがその指定する方法がわかりません。 サーバのOSはFREEBSDで MYSQLは4.0を使用しています。 telnetを使用して、サーバにはアクセスしています。 各charsetは変数、セッション値、グローバル値の順に client utf8 latin1 connection sjis latin1 database latin1 latin1 results utf8 latin1 server latin1 latin1 system utf8 utf8 character sets dir /usr/local/share/mysql/charsets/ /usr/local/share/mysql/charsets/ collation connection sjis_japanese_ci latin1_swedish_ci collation database latin1_swedish_ci latin1_swedish_ci collation server latin1_swedish_ci latin1_swedish_ci となっています。 この質問掲示板も確認したのですが my.cnfやmy.ini等のファイルがサーバ上に 見つからず質問させて頂いております。 どうぞ、よろしくお願い致します。

  • PDOでMySQL接続した際の文字化けについて

    http://ponk.jp/php/basic/php_mysql すいません。データベースを初めて勉強中なのですが、上記のサイトに書いてあるように文字をphpで表示させた場合日本語が???に文字化けします。いろいろググってみたのですが解決できず先に進めません・・。 照合順序などはutf8_general_ciとなっていまして、phpの方も<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />とutf-8が指定してありますので問題ないと思います。 考えられる原因というのはどんなものがありますか? テーブル表 CREATE DATABASE men; USE men; CREATE TABLE udon(name TEXT, price INT); INSERT INTO udon VALUES('たぬきうどん', 340); INSERT INTO udon VALUES('てんぷらうどん', 440); INSERT INTO udon VALUES('カレーうどん', 420); INSERT INTO udon VALUES('うどん定食', 520); 表示プログラム <table border="1"> <tr><th>名前</th><th>価格</th></tr> <?php $pdo = new PDO("mysql:dbname=men", "root"); $st = $pdo->query("SELECT * FROM udon"); while ($row = $st->fetch()) { $name = htmlspecialchars($row['name']); $price = htmlspecialchars($row['price']); echo "<tr><td>$name</td><td>$price 円</td></tr>"; } ?> </table>

    • ベストアンサー
    • MySQL