• 締切済み

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等のファイルがサーバ上に 見つからず質問させて頂いております。 どうぞ、よろしくお願い致します。

  • MySQL
  • 回答数2
  • ありがとう数2

みんなの回答

  • honnsuki
  • ベストアンサー率18% (62/329)
回答No.2

私はMySQL4.1で文字化けが起こったので、質問者さんのMySQL4.0のケースとは違うかも知れませんが、参考になれば。その時の対処法です。 まず、日本MySQLユーザー会 4.1以上の壁 (日本語の扱いの違い、文字化け等/含む5.0以上) http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_40 ここを参照して、 $dbHandle = mysql_connect("サーバ名","ユーザー名","パスワード"); $db="データベース名"; mysql_query("SET NAMES SJIS"); $sql = "select * from データーベース名 where ・・・(以下省略) という風に、データベースに接続直後にmysql_query("SET NAMES SJIS");(私はSJISを使っているので)という一文を挿入すると文字化けがなくなりました。 下記サイトも参考になるかも知れません。 MySQL 4.1 リファレンスマニュアル http://dev.mysql.com/doc/refman/4.1/ja/index.html 日本MySQLユーザ会 http://www.mysql.gr.jp/ オールアバウト MySQL関連記事一覧 http://allabout.co.jp/career/database/closeup/CU20040723A/index.htm

回答No.1

初めに謝らなくてはいけないのですがmy.cnfやmy.iniについては知りません、 レンタルサーバーの場合は本当にそういうの面倒ですよね。。。 私もレンタルサーバーなので気持ちは判ります。 もう試しているかもしれないのですが一応簡単な回避策を…、 ブラウザからの入力&出力ですよね?ならばサイトのソースに <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> としてみてください、この状態で入力→出力を試して 成功してたらラッキー、失敗だったら。。。 ただDBの方でもUTF-8な訳だからサイトも合わせなければ 文字化けするはずです。 気休めで効果がないのかも知れません、試してダメだったのかも知れません、 my.cnfやmy.iniについてのお答えができないのが心苦しいのですが… 頑張って下さい!

kaz100
質問者

お礼

お礼が遅れ、申し訳ありません。 試してみたところ、やはり文字化けしてしまいました。 MYSQLのバージョンを下げるしか ないんでしょうかねぇ・・・;;

関連するQ&A

  • mysql文字化けについて

    mysqlで文字化けしてしまいます +--------------------------+----------------------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | sjis | | character_set_results | sjis | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | D:\App\Dev\xampp\mysql\share\charsets\ | +--------------------------+----------------------------------------+ となっているのですが 文字化けがなおりません どうすれば治るのでしょうか?

  • MySQLの文字化け

    MySQLにPHPでデータを入力しています。 utf8でデータを送信しています。 どうも MySQLの設定がうまくできてないようです。 どこを どうやって変えたらよいのでしょうか? mysql> show variables like 'char%'; +----------------------+-----------------------+ | Variable_name        | Value             | +----------------------+-----------------------+ | character_set_client    | cp932             | | character_set_connection  | cp932             | | character_set_database   | latin1             | | character_set_filesystem  | binary             | | character_set_results  | cp932             | | character_set_server   | latin1             | | character_set_system   | utf8              | | character_sets_dir     | C:\xampp\mysql\share\charsets\ | +----------------------+-----------------------+

    • ベストアンサー
    • PHP
  • MYSQLでの文字化け

    php(utf-8)を使ってmysqlで簡単なサイトを作ってみましたが, 日本語をフォームから入力して、表示するとき、ブラウザではまったく問題ないのですが、 phpMYadminでデータベースを開くとの日本語部分が文字化けして読めません。 ローカルでは問題ないので、サーバーの問題かとおもい、 他のサーバー(ロリポップ)にphpとsqlをテストでコピーしてみましたら大丈夫でした。 何かの設定かと思い、 mysql> SHOW VARIABLES LIKE 'char%';でチェックし比べてみたところ 正常(ローカル、ロリポップともに)のものは character set client utf8 character set connection utf8 character set database utf8 なのに 文字化けするほうは(北米のサーバー) character set client latin1 character set connection latin1 character set database latin1 でした。文字コードのデフォルトが違うからだと思い、ググって見たところ、 結構よくある問題で、my.cnf でデフォルト文字設定utf-8に変更するなどで解決できるとありました。 でも、使っているサーバーは予めphpMYadminがインストールされているレンタルサーバーであるのでmy.cnfはさわれないのでは??? サーバー会社に連絡して変更可能かと聞いたところ、my.cnfを変更することはできません。またデータベースのサポートはいたしません。と冷たく返答。サーバー会社を変えたいところですが、自分が借りたサーバーではないのでそのまま使うしかありません。 ただ、教わった、sqlコマンドからALTER DATABASE <your_database_name> CHARACTER SET utf8 COLLATE utf8_general_ci を実行したところcharacter set databaseのみutf8になりました。(文字化けは一緒) character set connection とcharacter set database をmy.cnfをいじらず、sqlコマンドで変更可能なのでしょうか? もし、無理ならばどのような方法があるのでしょうか? サイトのフォームからの送信と受信はUTF-8に設定しています。 (だからだとおもいますが、ブラウザの表示だけは文字化けせずにでます。) お知恵がありましたらよろしくお願いします。

    • ベストアンサー
    • MySQL
  • perlのDBIよりMysqlにアクセスすると

    perlのDBIよりMysqlにアクセスすると DBD::mysql::db do failed: Data too long for column...のエラーが発生します。 つまり長すぎるデータを格納しようとしてエラーが出ているようです。 格納するデータの文字コードはutf-8です。 カラムは試しにvarchar(255)にしていますので、おそらく文字コードが原因ではないかと推測しています。 phpMyAdminから SHOW VARIABLES;コマンドを実行したところ 文字コード関係は以下の設定です。 character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server sjis character_set_system utf8 character_sets_dir C:\Program Files\MySQL\MySQL Server 5.0\share\char... collation_connection utf8_general_ci collation_database utf8_general_ci collation_server sjis_japanese_ci 開発環境は MySQL - 5.0.24-community-nt phpMyAdmin - 2.8.2.2 MySQL クライアントバージョン: 4.1.7 OS;WIN_XP Active Perl 5.8.8 です。 お気付きの点がございましたらご指摘宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • phpMyAdimnとコマンドラインでのSQL結果

    phpMyAdimnとコマンドラインで現在の文字コードを取得すると結果がことなる。 文字コードを調べる為に「show variables like 'char%';」を phpMyAdminLとコマンドラインで上で流したのですが結果がことなります。 phpMyAdmin character_set_client utf8 character_set_connection sjis character_set_database latin1 character_set_filesystem binary character_set_results utf8 character_set_server sjis character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/ コマンドライン character_set_client | sjis | character_set_connection | sjis | character_set_database | sjis | character_set_filesystem | binary | character_set_results | sjis | character_set_server | sjis | character_set_system | utf8 | character_sets_dir | /usr/share/mysql/charsets/ my.cnfで下記の設定を行っております。 [mysqld] character-set-server = sjis collation-server = ujis_japanese_ci skip-character-set-client-handshake [mysql] default-character-set=sjis [client] default-character-set=sjis 日本語文字も正しく登録、更新できphpMyAdminでも正しく表示されていると思うのですが phpMyAdminで結果が異なるのが気になり質問させていただきました。 phpMyAdminでの結果は無視しても問題ないのでしょうか。 環境 CentOs 5.7 Mysql 5.5.17 phpMyAdimn 3.4.7 php 5.3

    • ベストアンサー
    • MySQL
  • 文字化けに関して

    環境 PHP:PHP5.3.8 MySQL:mysql-5.5.17-win32 phpmyadmin:phpMyAdmin-3.4.7-all-languages 文字化けに関して教えて下さい。 過去に何度も設定した経験がありますが、また同じ事ではまってしまいました。 現在、phpのプラグラム(プログラムの設定は charset=SHIFT-JISで設定)でMySQLへ入力処理を行っていますが、 どうしても文字化けしてしまいます。 MySQLの環境としては、 mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | utf8 | | character_set_results | sjis | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:/Program Files/MySQL/MySQL Srever 5.5/share/charsets/ | +--------------------------+----------------------------+ となっており、上記character_set_database がutf8である事が原因とあった為、 何とか変更しようとしましたが、変更できません。 phpmyadmin の設定も間違っているのでしょうか? そもそもどのような設定を行えば良いのか、正しい値を教えて頂ければ幸いです。 初歩的な質問で申し訳ありませんが、教えて下さい。

    • ベストアンサー
    • PHP
  • MAMPのMySQLで文字化けする

    すみません、教えてください(><) mac( os X 10.7.5)でMAMP+Eclipse+PHPを使って以下のようにMySQLにデータ挿入 mysql_connect('localhost','root','root') or die(mysql_error()); mysql_select_db('mymy'); mysql_query('SET NAMES UTF-8'); mysql_query('INSERT INTO item SET id=1, name="あいうえお"'); をしたのですが、 phpMyadminからデータを確認してみると日本語が文字化けしてしまいます。 (phpMyadminからデータを挿入した場合はちゃんと表示されます。) 色々と調べ、 Eclipseの環境設定でワークスペースの文字コードやphpの文字コードをUTF-8にしたり、 MySQLのmy.cnfファイルの中に以下 [client] default-character-set = utf8 [mysqld] skip-character-set-client-handshake default-character-set = utf8 character-set-server = utf8 collation-server = utf8_unicode_ci init-connect = SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 を追加して再起動し、DBを一旦削除して再度作り直して挿入してみたりとやったのですが、改善されません。 サーバ接続の照合順序 は「utf8_general_ci」として作成しています。 コンソールからMySQLへ接続してDBの文字コードを確認してみると character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /Applications/MAMP/Library/share/charsets/ | というかたちになっています。 他にどういった点を改善すればいいのでしょうか? もうお手上げ状態でどうすることも出来ずにいます。。。

  • MySQLから送られて来たデータの文字化け

    いつもお世話になっています。 今回、phpでmysqlに接続したのですが、mysqlから引っ張ってきたデータが文字化けして困っています。(日本語のみ文字化け) 使っている環境は以下の通りです。 IIS6.0 PHP 5.0.4 MySQL 4.1.22 IISは、CGI、ASP、ISAPIを許可にしています。(.phpを見れるようになっています。) php.iniのmbstringの設定は以下のようになっています。 1105 mbstring.language=Japanes 1110 mbstring.internal_encoding = EUC-JP 1113 mbstring.http_input = auto 1117 mbstring.http_output = SJIS 1124 mbstring.encofing__translation = On 1128 mbstring.detect_order = auto 1132 mbstring.substitute_charecter = auto 1133 mbstring.script_encoding = EUC-JP my.iniの設定は以下のようになっています。 [mysql] default-character-set=sjis [mysqld] default-character-set=sjis skip-character-set-client-handshake mysqlでコマンドで確認したところ以下のような文字設定になっています。 mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | sjis | | character_set_results | sjis | | character_set_server | sjis | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ character_set_systemがutf-8になっているのが気がかりですが、 こんな感じで設定しています。 mysql内では文字化けしていないのに、 phpで呼び出した時に文字化けするのでしょうか? どなたかご教授よろしくお願いします。

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

    学校でjavaの勉強をしている者です。 初心者です。 学校の宿題をやるために、自宅でmysqlをインストールしたのですが、 javaで実行すると文字化けしてしまいます。 学校では、my.iniの中の [mysql] default-character-set=latin1 を [mysql] default-character-set=sjis と変更し、 [mysqld] default-character-set=latin1 を [mysqld] default-character-set=sjis skip-character-set-client-handshake と変更し、 SQLを再起動すれば解決すると習ったのですが、 文字化けが起こってしまいます。 show variables like '%char%'で文字コードを確認してみたところ、 | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | このように、sjisになっていませんでした。 どうしてなんでしょうか? どなたか解答のほどよろしくお願いします。

  • MYSQLの文字化けについて

    すみません。いまMYSQLでデータベースを構築しているのですが、秀丸で作成した、insert文をコマンドで走らせると 「ERROR 1366 (HY000): Incorrect string value: '\x87u \x82T\x82...' for column 'menseki' at row 1」というエラーが出てしまいます。 表の中身は日本語ですので、秀丸のinsert文がおかしいのかと思い、コマンドで直接打っても同じエラーが出ます。 my.iniやコマンドで「set names sjis;」を打ってみるなど文字コードなどをいろいろいじってみましたが直りません。ちなみに現在の文字設定は、show variables like '%char%';を走らせると +--------------------------+------------------------------+ | Variable_name | Value | +--------------------------+------------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | sjis | | character_set_server | sjis | | character_set_system | utf8 | | character_sets_dir | C:\MYSQL\share\charsets\ +--------------------------+------------------------------+ になります。 どなたかわかる方いましたらご教授ください。 使用環境 OS:winXP mysql5.0.45 php5.25 apache2.26 です。よろしくお願いします。