• 締切済み

php5とmysql5の設定

eucjpで記述したphpのフォームからmysqlにデーターを格納して取り出すDBがあり、日本語表示が化けない設定は出来たのですが同じphpから検索をするとヒットしません。 同じphpスクリプトで別のサーバー(phpとmysqlは同じバージョンです)では問題なく稼働していたので現在のサーバーのphp.iniとmy.cnfの問題だと思うのですが他の似たような状況の方の解決策をなぞってeucjpに統一するなど一通り試したのですがどうもうまく行きません。 ちなみにサーバーは自サーバーでApache/2.2.3 (Debian) 、PHP/5.2.0-8+etch7、mysqlは5.0.32です。 php.iniは mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto (EUC-JPにすると入力後?になる) mbstring.http_output = EUC-JP mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; my.cnfは [client] default-character-set= ujis [mysqld] skip-character-set-client-handshake default-character-set = ujis character-set-server = ujis [mysql] default-character-set = ujis です。よろしくお願いします!

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

どのように上手く行かないのでしょうか? 欠かれている情報だと、通常は検索できて、ある一文字の検索文字の場合のみ検索に失敗している状態じゃないかと思います。 その場合、mbstring.encoding_translationやmbstring.http_inputを利用しているのが問題のように思えます。 これらをオフにするか、mbstring.detect_orderでEUC-JPの優先順位を上げることで上手く動作するかも知れません。 他の問題だった場合、どのような問題が発生するのかを書かれると問題の切り分けがしやすいかも知れません。

no-sleeper
質問者

お礼

ご意見、ありがとう御座います。 同じphpのフォーム(eucjp)でDBに「埼玉県」と入力して、全件表示画面にはその項目が表示されます。「埼玉」や「県」などで検索するとヒットしないのです。。。 重ね重ねになりますが同じOSでmysqlやphp、phpmyadminからapacheまで同じバージョンのサーバーで稼働していたスクリプトなのでプログラムには問題ないと思われます。 mbstring.encoding_translationやmbstring.http_inputをOffとコメントにしてみましたが状況変わりませんでした。 mbstring.detect_orderはautoからEUC-JPに変更しましたがこちらも変化無しです。 一つ気がついたのは検索ウインドに半角のゼロ「0」を入れるとDBには「0」の文字列は無いのにヒットします。おっ!と思って半角「x」を試しましたがヒット無し、ヒントになりそうなのは半角バックスラッシュ「/」を入力するとヒット無しですが検索窓の「/」が半角クエスチョンマーク「?」に変わります。これやっぱ文字の入力と出力がコードが合っていないということですよね。。。? どう合わせれば良いのかさえ分かればどうにかなるのですが。。

関連するQ&A

  • php,mysqlでの文字化け(機種依存文字)について

    機種依存文字「○いち」「(株)」の文字化けがどうしても解消できません。 phpソースに機種依存文字をコーディングした場合には正しく表示されますが、外部より入力した文字をMySQLに格納し、phpにてデータを取り出し表示すると文字化けします(phpmyadminでの表示時点で文字化け)。 「mb_convert_encoding」等にてテストしてみましたが、結果は変わりませんでした。また、phpmyadminにて直接MySQLに入力しても、phpmyadminでもブラウザ(php表示)でも文字化けしてしまいます。 文字コードについて知識が浅く、各環境はデフォルト状態です。 「mbstring.internal_encoding = EUC-JP 」にも関わらず、「character_set_client = utf8」「character_set_results = utf8」としているのに、機種依存文字以外は問題無く表示されております。 1.機種依存文字化けの対応方法 2.正しい環境設定方法(文字コードの統一を行うべき等) ご教授のほど、何卒宜しくお願い致します。 <<環境>> ・windows xp ・UNIX socket 4.1.22 ・phpMyAdmin - 2.11.1 ・Mysql 4.1.21 ・PHP 4.4.7 【Mysql】 character_set_client = utf8 character_set_connection = utf8 character_set_database = utf8 character_set_results = utf8 character_set_server = ujis character_set_system = utf8 【my.cnf】 [client] default-character-set = ujis [mysqld] default-character-set = ujis [mysqldump] default-character-set = ujis 【php.ini】 mbstring.language = Japanese mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.internal_encoding = EUC-JP mbstring.detect_order = auto mbstring.substitute_character = none; ※phpソースには「charset=euc-jp」を記載

    • 締切済み
    • PHP
  • PHP+MySQL 4.1.20における文字化け

    お世話になります。 現在、学内に実験的に設置されているサーバーを使って、そこに 「phpMyFAQ(Ver.2.0.3)」を入れて動かそうと試みています。 phpMyFAQのインストールは済んだのですが、いざ使ってみようと思って カテゴリ追加等をしようとすると、日本語が文字化けして「???????」と いうような状態になります。 きっと文字コードの設定に問題があり、php.iniやmy.cnf等の設定を変える 必要があるのでしょうが、サーバーは共用利用しているものであり、他の 利用者へ影響が出てしまうため、変更が困難です。 また、私自身がまだphpやMySQLに詳しくないため、どこを改善すればよい のかがわからずに困っております。(.htaccessをつくっていろいろと記述 してみたりしたのですが、文字化けは解消されていません。) もし何かアドバイス等ありましたらご教示いただけませんでしょうか。 よろしくお願いいたします。 MySQLのバージョン:4.1.20 PHPのバージョン :4.3.9 <MySQL> character_set_client ujis character_set_connection ujis character_set_database ujis character_set_results ujis character_set_server ujis character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/ [mbstring] mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none;

  • Linuxサーバ接続とWindows単独で開発時のphpの文字コード

    FC4サーバとwindows機をハブでつないでPHP+mysqlを学んでいます。 サーバにアップロードする前提でeuc-jpで保存したPHPスクリプトとmysql文をwindows機単体で開くと、日本語が文字化けします。 php文はその都度euc-jp,SJISで保存し直せば、取り敢えず、問題は回避できますが、mysqlはどのようにすれば良いでしょうか。 諸先輩は、linux(UNIX)にアップするPHPスクリプトとmysql文を、windows機単体で開発するとき、どのような環境設定をしておられるのでしょうか。教えて頂ければ有難いです。私の現在の設定状況は次の通りです。 php.ini サーバ、windows(クライアント)共に、 [mbstring] mbstring.language = Japanese mbstring.internal_encoding = EUC_JP           mbstring.http_input = auto               mbstring.http_output = SJIS    mbstring.encoding_translation = On            mbstring.detect_order = auto               mbstring.substitute_character = none; であり、その他に サーバを mbstring.func_overload = 1          クライアントは ;mbstring.func_overload = 0 としてコメントアウトしています。   ----------------------- サーバの/etc/my.cnf old_password=1の下に default default-character-set=ujis と追記し、更に [client],[mysql],[mysqldump]の各項を新設して、それぞれに、やはりdefault default-character-set=ujis と書き加えています。 クライアントの my.ini [mysqld]default-character-set=sjis [mysql]default-character-set=sjis [mysqldump]default-character-set=sjis としてあります。

    • ベストアンサー
    • PHP
  • Fedora7+PHP+MySQLで文字化け

    すみません、表題にてPHP側でCSVファイルをINSERTで登録していますが、どうしても文字化けしてしまいます。 Fedoracore7 PHP5.2.2 MySQL5.0.37 phpMyAdmin2.11.0 <php.ini> mbstring.internal_encodein = EUC-JP mb・・・output = EUC-JP <my.cnf> [client]、[mysqldump]、[mysql]ともに default-character-set = ujis [mysqld] default-character-set = ujis skip-character-set-client-handshake init-connect = SET NAMES ujis 色々と調べてEUC-JP(ujis)で統一してるつもりなのですが・・・ phpmyadminでは文字化けは解消してまして、こちらでレコードを登録すると、PHP側では文字化けなしで表示されます。 PHP側での書き込みは、 mb_convert_encoding($val,"EUC-JP","SJIS") で行っていますが、文字化けが解消されません。 どなたかご教授頂ければと思い、質問させて頂きました。 宜しくお願いします。

    • 締切済み
    • PHP
  • MySQL4.1の日本語化

    自分で出来るところまでやったのですが、日本語を入力すると???となってしまいます。以下に状況を挙げますので、知識のある方は知恵をお貸し下さい。 version:Mysql4.1.20,php5.2.2 OS:CentOS 4.4 my.cnfにおいて [mysqld] default-character-set = utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 Php.iniにおいて mbstring.internal_encoding = EUC-JP ;mbstring.http_input = auto mbstring.http_output = EUC-JP ↓↓ mbstring.internal_encoding = UTF-8 ;mbstring.http_input = auto mbstring.http_output = UTF-8 ;iconv.input_encoding = ISO-8859-1 ;iconv.internal_encoding = ISO-8859-1 ;iconv.output_encoding = ISO-8859-1 ↓↓ iconv.input_encoding = UTF-8 iconv.internal_encoding = UTF-8 iconv.output_encoding = UTF-8 PHPスクリプトに関して、SET NAMESとキャラクタセットをUTF-8とする。 という感じです。 show variables like 'character%';を行うと +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ という感じです。 何が原因なのでしょうか。。初心者ではありますが、素人なりに設定はあっていそうな気がします。詳しい方は何卒よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHPとMYSQLの文字コードについておねがいします。

    Apache2、PHP5、MYSQL5.0を使用しています。 当方、PHPの初心者講座などを見てUTF-8で作っていこうと思い設定をしたものの、上手くいかず質問させていただきました。 PHPからQuery文(日本語)を送ってMYSQLのテーブルにINSERTしたのですが、文字化けしてしまいます。 my.iniのdefault-character-set=部分をutf8からsjisやujisなどに変えてやってみたのですが、文字化けの種類(?)が変ってしまうだけでやはり文字化けしてしまいました。 ALTER DATABASE AAA CHARCTER SET utf8をやっても変らず文字化けしてしまい、show variables like 'char%'でCharcterを調べたところ、下記のようになっていました。 charcter_set_client | utf8 charcter_set_connection| utf8 charcter_set_database | utf8 charcter_set_filesystem| binary charcter_set_results | utf8 charcter_set_server | utf8 charcter_set_system | utf8 MYSQLとPHPの文字に関係あるようなところをコピーしました。 どこかおかしなところがあるでしょうか。 ------my.ini----- [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 ----------------- ------php.ini----- output_buffering = Off extension=php_mbstring.dll [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On ------------------ どなたか解決策を知らないでしょうか。よろしくお願いします。

    • 締切済み
    • PHP
  • PHP+MySQLでSJISからEUCへの文字コード変換方法を教えてください。

    こんにちは。いつもお世話になっております。本来であれば自サーバーで検証してから質問すべきだとは思いますが、現在稼動中のサーバーしかなく、止めることができないので質問させていただきます。 現在、PHP+MySQLでサイトをSJISコードで運営しておりますが、「表」「能」等のSJISの文字化け対策が面倒になってきまして、EUCに変換してしまおうかと検討しております。 現状の日本語に関する設定は下記のようになっております。 ▼MySQL(my.cnf) バージョン:4.1.20 [mysqld] default-character-set=sjis init_connect="SET NAMES sjis" [mysql.server] default-character-set=sjis [mysqldump] default-character-set=sjis [mysql] default-character-set=sjis ▼PHP(php.ini) バージョン:4.3.9 mbstring.internal_encoding = SJIS mbstring.http_input = pass mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto PHP内でMySQLと接続した直後に次のようにSJISを指定しています。 $sql="SET NAMES sjis"; mysql_query($sql); ちなみに、MySQLはMySQLadminで管理しておりますが、テーブルの照合順序は全てsjis_japanese_ciになっています。 上記のような内容ですが、この場合SJISからEUCに変換する場合の手順として、下記の流れでよろしいでしょうか? 1.PHPファイルをEUCコードに変換。 2.php.iniのSJISの部分をEUCに変換。 3.MySQLの設定ファイルのsjisの部分をujisに変換。 4.MySQLのテーブル内のデータを全てエクスポートして、外部エディタでEUCに変換後インポートする。 特に上記4の作業はテーブル数及びデータが膨大なため結構な作業になってしまいそうです。 もしもっと楽な方法があればご教授いただければ幸いです。なお、サーバーはRed Hat Enterprise Linuxです。

    • ベストアンサー
    • PHP
  • 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レコードの文字化けについて

    皆さんの同様の質問内容を全て拝見しましたが、理解できず質問させていただく経緯になりました。 何度も同じ質問掲載で大変申し訳ありません。 ▼現在の環境です。 Linux ES4 Apache2.0 PHP4.4.4 MySQL 4.1.12 2台のサーバで、WEBとDBに分けて構成しております。 WEBサーバのPHPからはDBサーバのMySQLへ接続可能となり、データも表示されます。 今回問題になっていいるのは、DBサーバ上のLinuxのGNOME端末ツールから接続し、DML文(INSERT)をした際に、日本語の値が化けて格納されてしまう症状に陥っております。 英語の値は問題なくWEB上に表示されております。日本語の値はWEB上では化けて表示されております。DB上の値が化けて格納されたためと思っております。 ▼WEBサーバ側のPHP.iniです。 mbstring_language=Japanese mbstring_internal_encoding=EUC-JP mbstring_http_input=auto mbstring_http_output=pass mbstring_encoding_translation=on mbstring_detect_order=auto mbstring_substitute_character=none ▼DBサーバ側のmy.cnfです。 [mysql] default-character-set=sjis [mysqld] default-character-set=sjis [client] default-character-set=sjis [mysqldump] default-character-set=sjis ▼SHOW VARIABLES LIKE 'char%';を実行した結果 character_set_client sjis character_set_connection sjis character_set_database ujis character_set_results sjis character_set_server sjis character_set_system utf8 同じような質問で大変申し訳ありませんが、どなたか御教授願えませんでしょうか。よろしく御願いいたします。

    • ベストアンサー
    • MySQL
  • PHP+MySQLいくら解決策をやっても文字化け

    PHP、MySQL初心者です。 MAMPを使って開発を行っているのですが、 どうやっても ターミナル内の日本語 PHPmyadminでinsertした日本語 MySQLから吸い出したPHPデータの日本語(apacheを使ってローカルサーバーで確認) PHPからinsertした日本語 が文字化けをし、 ??????? みたいな感じになります。 色々調べできる限りはやりましたがダメです。 --------------------------------------------------------------- 環境は Mac OS X 10.6.5 snow leopard MAMP1.9.2 PHP5.3.2 MySQL5.1.44 phpMyAdmin3.2.5 Apache2.0.63 --------------------------------------------------------------- 行った解決策 (1) /Applications/MAMP/Library/share/mysql/ にあるmy-medium.cnfをコピー /Applications/MAMP/db/mysql/ に入れmy.cnfにリネーム [mysqld] default-character-set=utf8 init-connect=SET NAMES utf8 character-set-server = utf8 collation-server = utf8_general_ci skip-character-set-client-handshake [mysql] default-character-set=utf8 を追記 (2) MAMP/conf/php5.3 にあるphp.iniを 変更前:;default_charset = “iso-8859-1″ 変更後:default_charset = “UTF-8″ 変更前:magic_quotes_gpc = On 変更後:magic_quotes_gpc = Off 変更前:;mbstring.language = Japanese 変更後:mbstring.language = Japanese 変更前:;mbstring.internal_encoding = EUC-JP 変更後:mbstring.internal_encoding = UTF-8 変更前:;mbstring.http_input = auto 変更後:mbstring.http_input = auto 変更前:;mbstring.detect_order = auto 変更後:mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII (3) phpデータ内のheadに <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> を記述 もちろん上記の設定後にMAMPの再起動等しております。 ちなみに ターミナルにて show variables like "char%"; を行ったところ +--------------------------+-----------------------------------+ | Variable_name | Value +--------------------------+-----------------------------------+ | character_set_client | utf8 | character_set_connection | utf8 | character_set_database | utf8 | character_set_filesystem | binary | character_set_results | utf8 | character_set_server | utf8 character_set_system | utf8 | character_sets_dir | /Applications/MAMP/Library/share/mysql/charsets/ となっております。 どうしたら文字化けが治るのでしょうか? かなり調べましたが、つんでます。 お願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう