• ベストアンサー

phpで文字化け(php.ini)

phpスプリクトはshift-jisで、文字化けしたためphp.iniをいじってみました。しかしどうやっても一定の漢字が文字化けしてしまいます。(「貼る」等…) 設定した箇所は下記の通りです(色々なサイトを回って調べた結果このような設定にしました) PHPのバージョンは4.4.1です。 default_charset = "Shift-JIS" mbstring.language = Japanese mbstring.internal_encoding = SJIS mbstring.http_input = auto mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0

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

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

バックスラッシュ(5C)が該当文字に含まれるためですね (貼:935C) addslashesしてやればいいかも または、単純に"貼\る"としてやればいいかも

参考URL:
http://jp2.php.net/manual/ja/function.addslashes.php

その他の回答 (1)

回答No.1

私もUNICODE環境ですが、 一定の「文字」が化けてしまいました。 私の場合は、 文字列をURLの引数として使っていたため、 文字化けが発生してしまいました。 このときは、urlencodeとurldecodeを使って回避しました。 関係ないかもしれませんが、参考になれば・・・

manachu
質問者

お礼

ありがとうございます。参考にさせていただきます。

関連するQ&A

  • phpmyadminで文字化け

    こんにちは、 現在、php5,mysql4で構築しているのですが、 phpmyadminでテーブルに入れた日本語を見ると 文字化けを起こしており、 たぶん、default_charsetだと思うのですが、 何を設定すればよいのでしょうか? MYSQL4 UTF-8 PHP5 mbstring.detect_order auto mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input auto mbstring.http_output SJIS mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.script_encoding no value mbstring.substitute_character no value default_charset no value

    • 締切済み
    • PHP
  • PHPの文字コード (php.iniの設定)

    php.iniを以下のように設定した場合について教えてください。 (PHPの参考書に載っていたWindows環境での設定例です) output_buffering = On output_handler = mb_output_handler default_charset = Shift_JIS extension=php_mbstring.dll 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 = auto mbstring.script_encoding = EUC-JP 1. この設定は「PHPの記述されたファイルはEUC-JPで、 ブラウザに表示される時点でShift-JISに変換される」 ということですか? 2. PHPの参考書(PHP5対応)に、 「PHPアプリケーションを構築する場合、文字コードを Shift-JISにすると、PHPのバージョンやphp.iniの設定に よっては文字化けの原因になることがあるので、 Windows環境でもEUC-JPで保存することを強くお勧めする」 というようなことが書かれていました。 素人考えで、すべて同じ文字コード(EUC-JP)のほうが 楽なのではないかと思ったのですが、上記のように 設定するのはどういう理由からでしょうか? 3. CSSファイルやテンプレートファイル(Smarty)の 文字コードは、Shift-JISとEUC-JPのどちらで保存 すればいいのですか? 4. metaタグのcharsetはShift-JISであっていますか?

    • ベストアンサー
    • PHP
  • PHPがローカル環境でのみ文字化けする

    PHPをApache2.0上でローカルテストすると、ブラウザ表示がどうにも文字化けしてしまいます。 EUCで組んだスクリプトをmb_convert_encodingでSJISに変換して出力しているのですが、本番用のサーバーではきちんと動作するのに、ローカル環境ではブラウザがEUCと認識してしまっているようで、文字化けが発生します。 99%php.iniかapacheの設定がおかしいのですが、どこがおかしいか見てはいただけないでしょうか。 php.iniのそれっぽい部分 mbstring.encoding_translation = Off mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; ;mbstring.func_overload = 0 なお、Apacheのhttpd.confにAddDefaultCharset項目はありませんでした。 特殊要因としてApacheがXAMPPの中で制御されていることなのですが、php.iniはApacheのbinディレクトリ内のものを編集しています。 以上です。 どうかよろしくお願いします。 WinXP SP3 PHP 5.28 Apache 2.0 XAMPP 1.7.0 ※ApacheとXAMPPはPleiadesにてEclipseを導入したときについてきたもの。

    • ベストアンサー
    • PHP
  • php.iniを変更したのにUFT-8が文字化け

    こんにちは。教えて下さい。 Movable TypeをUTF-8で運営しようと思いましたが、使用中のサーバーのphpの文字コードがEUC-JPでした。 サーバーに問い合わせたところ、php.iniを編集するだけで文字コード変更できます、とのこと。 そこで、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; を mbstring.language = neutral mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.internal_encoding = UTF-8 mbstring.detect_order = auto mbstring.substitute_character = none; にしてみました。 当方初心者で、php.iniは初めていじりました。 EUC-JPとあった箇所またはJapaneseとあった箇所を変更したのみです。 また、Movable Typeのmt-config.cgiで 文字コードをEUC-JPからUTF-8に変更。 Movable Typeの文字コード関連の変更はこのファイルのみですのでこれで大丈夫・・・。 そう思ったのですが、Movable Typeが文字化け・・・。 php.iniの設定が間違っているのでしょうか? 助けてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 入力値 文字化け

    phpでFormで入力した値(日本語)が文字化けしてしまいます。 環境は WinXp pro apache2.0.59 php 4.4.7 php.iniのおもな設定ですが、 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; ブラウザからすべてShiftJisで入力されているのですが、 それがうまく EUC-JPに内部エンコードされていません。 mb_convert_encording($str,"EUC-JP","auto")をスクリプト内で 記述するとうまく表示されますが、なんとか設定で文字化けしないよう にできないでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • phpのini_setの使い方

    宜しくお願いします。 携帯サイトをphpで作ってるんですが、特定の条件になると文字化けします。携帯の日本語コードは『shift_jis』だと思うんですが、サーバのpnpinfoをみてみると、 mbstring.detect_order auto auto mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output SJIS SJIS mbstring.internal_encoding EUC-JP EUC-JP mbstring.substitute_character no value no value となっていて、もしかしたら、 『mbstring.internal_encoding EUC-JP EUC-JP』 が原因かなーなんて漠然と思っています。 サーバのサポートを見てみると、 『mbstring.http_outputをあらかじめSJISに設定しておりますが、標準では、出力には変換ハンドラを経由しないように設定にしておりますので、基本的に日本語は、PHP4を記述したコードおよびPHP4 内での内部扱いコードに設定してあるEUCのまま出力されます。変換ハンドラを経由しないのは、互換性などの事由におきますものです。ユーザが PHP4に、出力時に自動的に出力をシフトJISにしたい場合には、コード内で変換ハンドラを利用するようにコーディングする必要があります。』 となっておりました。php初心者の私には読んでも何がなんだかさっぱりわからず、悩んでおります。 自分なりの解釈として、 『ini_set関数を使ってサーバのphpの設定を変更してあげれば、文字化けは解消する』のでは?と思い、webでini_set関数の使い方を検索してみましたが、行き着く先はphpのサイトになってしまい、見ても使い方自体はよく分かりませんでした。 大変悩んでおります!どなたか助けてください!! 宜しくお願いします。

    • ベストアンサー
    • PHP
  • mbstringのMaster Valueの部分を変えることはできませんか?

    mbstring.detect_order    『no value』『no value』 mbstring.encoding_translation『On』『Off』 mbstring.func_overload    『0』『0』 mbstring.http_input     『auto』『pass』 mbstring.http_output     『Shift_JIS』『pass』 mbstring.internal_encoding  『Shift_JIS』『no value』 mbstring.language      『Japanese』『neutral』 mbstring.substitute_character『no value』『no value』 上記のような設定を mbstring.detect_order    『auto』『auto』 mbstring.encoding_translation『On』『On』 mbstring.func_overload    『0』『0』 mbstring.http_input     『auto』『auto』 mbstring.http_output     『sjis』『EUC-JP』 mbstring.internal_encoding  『sjis』『EUC-JP』 mbstring.language      『Japanese』『EUC-JP』 mbstring.script_encoding   『no value』『no value』 mbstring.substitute_character『no value』『no value』 このように設定することはできるのでしょうか? .htaccessで設定する場合はLocal Valueの部分が変更されるのですよね? Master Valueの部分も変更する場合にはどうしたらよいのでしょうか?

    • 締切済み
    • PHP
  • php 文字化けについて

    はじめまして、phpについて質問があります。 最近、PHP入門の本を買ってphpインストールをして、成功しました。 しかし、プログラムで「Hello」など英語は表示できるんですが、「こんにちは、世界!」など日本語で表示させようすると「??????A??E?I」となって文字化けします。 いろいろと調べましたが、どのようにすればいいか分からないまま2週間過ぎました。どなたか教えてくださいお願いします。 以下設定情報です↓ XP Apache2.059 PHP5.2.1 php.ini 447:default_charset=EUC-JP 1165:mbstring.language=Japanese 1170:mbstring.internal_encoding=EUC=JP 1173:mbstring.http_input = auto 1177:mbstring.http_output = EUC-JP 1184:mbstring.encoding_translation = On 1188:mbstring.detect_order = auto 1192:mbstring.substitute_character = none;

    • ベストアンサー
    • PHP
  • FORMからの文字入力文字化け

    「.htaccess」で設定した場合、正常に動作するのですが、「自作スクリプト内」でPHP環境を設定すると文字化けします。 フリーの掲示板が「.htaccess」で設定した場合、文字化けしますので、自作スクリプトも今回からスクリプト内部からPHP環境を設定し動作確認をしています。 FORMからの文字入力だけが文字化けしてしまうのですが、解決方法が見出せずに困っています。 また、「mbstring.encoding_translation」の設定方法がわからずに設定していないため、入力文字化けするのでしょうか。 表示だけは、文字化けせずに表示されます。FORMからの入力文字だけが文字化けします。 解決方法をご存知の方がいらっしゃいましたらご教授のほど宜しくお願いします。 # .htaccessで設定する場合 php_flag output_buffering "On" php_value output_handler "mb_output_handler" php_value default_charset "Shift_JIS" php_value mbstring.language "Japanese" php_value mbstring.internal_encoding "EUC-JP" php_value mbstring.http_input "auto" php_value mbstring.http_output "SJIS" php_value mbstring.detect_order "auto" php_flag mbstring.substitute_character "none" php_flag mbstring.encoding_translation "On" # 自作スクリプト内で設定する場合 ini_set("output_buffering", "On"); ini_set("output_handler", "mb_output_handler"); ini_set("default_charset", "Shift_JIS"); mb_language("Japanese"); mb_internal_encoding ("EUC-JP"); mb_http_input("auto"); mb_http_output("SJIS"); mb_detect_order("auto"); mb_substitute_character("none"); ob_start("mb_output_handler");

    • 締切済み
    • PHP
  • PHPの文字コードについてお願いします。

    Apache2、MYSQL、PHP5を使用して勉強しているものですが、文字コードについて質問させてください。 まず、参考書を読みながらphp.iniをこの用に設定しました。 output_handler =mb_output_handler default_charset = "Shift_Jis" extension_dir = "c:\php\ext\" extension=php_mbstring.dll extension=php_mysql.dll mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; MySQLの文字コードはウィザードでUJISに設定して勉強しています。 Apache2の設定は本で支持が無かったのでとくに設定はしていません。 しかしこれでは文字化けが起こったりしてしまい、Googleなどで調べたらUTF-8で統一するのが良いと書かれていたのですが、どのように変更すればわからないです。私の購入した本では「mbstring.detect_order = auto」の意味などが書いて無くて、ただ丸写しの状態になってしまい設定方法が身についていません。なので今回の質問で、文字コードの設定を覚えておきたいのです。 1.UTF-8などの文字コードに変える場合は、Apache2の設定を変える必要があるのでしょうか。 2.上記したphp.iniの設定はどのような意味があるのでしょうか?SHIFT-JISでPHPを書くということでしょうか? できれば各自の良い設定方法を教えてください。 3.たとえばSHIF-JISで書いたPHPファイルを保存するときはSHIFT-JIS形式で保存するのでしょうか? 4.なぜphpはSHIFT-JISで書いているのにMySQLではUJISの文字コードを使用するのでしょうか。統一した方がいいのでは? 5.utf-8に文字コードを変える場合は、php.iniのどの部分を設定し直せばいいのでしょうか? 一つでも回答して頂けるととても嬉しいです。よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう