• ベストアンサー

携帯向けフォームの文字化け

cyanberryの回答

  • ベストアンサー
  • cyanberry
  • ベストアンサー率50% (117/230)
回答No.2

>とりあえず$_POSTを何らかの配列にしてmb_convertに渡しても変化なしでした・・・ マニュアルでmb_convert_encodingの使い方をよく読んでください。第一引数はarrayではなくstringと指定されていますよ。 基本的なことを知らずに開発しているようなので、一度マニュアルを熟読されてはどうでしょうか。 http://www.php.net/manual/ja/ また、携帯も対応させる目的で出力エンコードをSJISにするのであれば、テンプレートをSJISで記述して出力されるようにするほうが賢明です。なぜUTF-8なのでしょうか?

tanity
質問者

お礼

おっしゃる通りでした…勉強不足でご迷惑お掛け致しました。 テンプレ自体をShift_JISにし、モバイルのみの設定でinternal_encodingをShift_JISにすることで何とかShift_JISを正常に表示出来そうです。 PHP内で変数に入れてしまっている日本語部分はmb_convert_encodingで対処出来そうです。 色々と勉強になりました。ありがとうございました!

関連するQ&A

  • 携帯サイトで稀に文字化けしてしまいます。

    PHP+MySQLで携帯サイトを構築しています。 DBと各ファイルのエンコードはEUC-JPで、携帯対応するために 出力のみhtaccessにてSJISにしております。 また、入力フォーム等もあるためhtaccessに下記を記述したところ、 基本的には問題なく表示するのですが、更新を繰り返すと5~10回に1回ほど文字化けを起こします。 #htaccess内の記述--- php_value output_handler mb_output_handler php_value default_charset Shift_JIS php_value mbstring.language Japanese php_flag mbstring.encoding_translation 0 php_value mbstring.http_input auto php_value mbstring.http_output SJIS php_value mbstring.internal_encoding EUC-JP php_value mbstring.substitute_character none #------------------- それも、現時点で確認している状況では ・db.phpというファイル内でDBからデータを取得し、その中でdumpした場合はまったく文字化けせずSJISで表示 ・index.html内に日本語を記述しても文字化けなくSJISで表示 ・main.php内でいろいろなファイルをrequire_once等していると文字化けが発生 (具体的には日本語部分が全て???になったり空白になったりする ソースを開いてエンコードを変えても変化無し) 毎回正常だったり毎回文字化けしていれば分かるのですが、ごく稀にそういう状況が起きてしまっているので困っています。 どなたか知恵をお貸し下さい。 サーバ環境 レンタルサーバ Kagoya Internet Routing(共用) Apacheバージョン Apache/1.3.37 MySQLバージョン 5.0.33 (Ver 14.12 Distrib 5.0.33) PHPバージョン 5.2.5

    • 締切済み
    • 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
  • Gmailの取り込みで文字化けする

    PHPの問合せフォームでGmailに届いたメールを取り込む処理を作成しています。 サイトが多言語対応で日本語と英語は問題なく取り込めているのですが、韓国語や中国語などが文字化けしてしまいます。 エンコードがUTF-8じゃなく「KS_C_5601-1987」などできて、PHP側で認識できていないのが原因だと思います。 iconv()、mb_convert_encodingだと以下のエラーになります。 iconv:Wrong charset, conversion from `ks_c_5601-1987' to `UTF-8' mb_convert_encoding:Illegal character encoding specified PHP Infoのmbstringは添付のようになっています。 php.ini内では特にmbstringの設定はしていないのですが、 /etc/php.d/mbstring.ini で設定をしているようです。 その中も「extension=mbstring.so」とextensionしているだけです。 すでに動いているサイトですので、PHPの再インストールをせずに他の言語も使えるようにしたいのですが、何か良い方法はありませんか? ここ1週間ほど、ここで立ち止まっていますので、なにかご教授いただけないでしょうか。 よろしくお願いします。

    • 締切済み
    • 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のバージョンは4.3.9 サーバーはアパッチ2です。 phpでmb_convert_kanaとhtmlspecialcharsを使ったフォームプログラムを作りました。 mb_convert_kanaは携帯電話でカタカナや記号を半角にするために、 htmlspecialcharsはPOSTから来たデータをエスケープするために使いました。 解決したいエラーは「代表者」という文字が「代表\者」というように 余分なバックスラッシュが入ってしまうことです。 .htaccessには以下のようなコードを入れています。 php_value default_charset Shift_JIS php_value default_mimetype "application/xhtml+xml" php_value mbstring.language Japanese php_value mbstring.encoding_translation On php_value mbstring.http_input auto php_value mbstring.http_output SJIS php_value mbstring.internal_encoding SJIS php_value mbstring.substitute_character none

    • 締切済み
    • PHP
  • 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
  • 日本語が使いたいのですが[mbstring]設定がわかりません

    環境は winxp sp2 apache 2.0.54 php 5.0.4 argosoftmailserver php.iniの設定は [mbstring] 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 です。足らない事があればお願いします。 下はphpの文です。 <?php $subject = "テスト"; $message = "あいうえお"; $test="日本語エンコーディングテスト"; print "$test (" . mb_detect_encoding($test) . ")<br>"; print ("mbstring.http_input=". mb_http_input() ."<br>"); print ("mbstring.http_output=". mb_http_output() ."<br>"); print ("mbstring.internal_encoding= ".mb_internal_encoding()."<br>"); $subject = mb_convert_encoding($subject, "SJIS", "EUC-JP"); $message = mb_convert_encoding($message , "SJIS", "EUC-JP"); mb_language("Japanese"); $chk = mb_send_mail('******@*******',$subject,$message,'From:***@******.dyndns.org'); if($chk==FALSE) { print "送信失敗"; } else { print "送信完了"; } ?> エンコードテストの結果は以下です。 日本語エンコーディングテスト (SJIS) mbstring.http_input= mbstring.http_output=SJIS mbstring.internal_encoding= EUC-JP よろしくお願いします。

    • ベストアンサー
    • PHP
  • 文字化けの原因を教えてください。

    WindowsでスクリプトをEUCで保存し、シフトJISでブラウザへ出力ときの 設定として以下のようにphp.iniを設定しています。 ~php.ini~ output_buffering = On output_handler = mb_output_handler magic_quotes_gpc = Off default_charset = Shift_JIS extension_dir = C:/php/ext 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 = none ~php.ini~ mb_detect_encodingでDBから取得した値の文字コードは、SJISでした。 mb_convert_encoding($dbdata,"EUC-JP","SJIS")で正しく表示されます。 iniファイルの設定のみで正しく表示するにはどのように設定するのがいいのでしょうか?それとも、このような文字コード変換は必須なのでしょうか? よろしくお願いします。 [PHP使用環境] PHP=5.1.6 OS=Windows2000 PRO webserver=apatch2.0 [DB環境(リモートサーバ)] DB=MS SQL Server2000 OS=Windows2003 server R2

    • 締切済み
    • PHP
  • 文字化け(Shift-jis→UTF-8変換)で困ってます。

    フォームから送信されたShift-jisの文字列をUTF-8に変換して、ImageTTFText関数を使用して画像として表示させようとしているのですが、文字化けをしてしまって困っています。 入出力はShift-jisで、内部処理はUTF-8で行いたくて色々実験してみたのですが、どうにもうまくいきません。 以下にソース・環境を載せますので、どなたか、間違いをご指摘いただけないでしょうか? なるべくPHP.iniの設定は変えないで対処したいです。 どうか、よろしくお願いいたします。 【サーバのPHP.iniの設定(PHP ver.4.3.9)】 mbstring.detect_order = auto mbstring.encoding_translation = off mbstring.http_input = auto mbstring.http_output = SJIS mbstring.internal_encoding = EUC-JP mbstring.language = Japanese 【使用しているソース】 <?php mb_language("ja"); mb_internal_encoding("UTF-8"); mb_http_input("SJIS"); mb_http_output("SJIS"); // 表示する文字列 $str = mb_convert_encoding($_GET["txt"], "UTF-8", "SJIS"); // 画像サイズ define ( IMGWID, 300 ); define ( IMGHEI, 300 ); // フォントサイズ define ( FONTSIZE, 20 ); // 文字のスタート位置 define ( START_X, 10 ); define ( START_Y, 50 ); // 生成画像 $img = imagecreatetruecolor ( IMGWID, IMGHEI ); // フォント色 $fntc = ImageColorAllocate ( $img, 255, 255, 255 ); // 使用するフォント define ( FONTTYPE, '../font/DFKaiE.ttf' ); // フォントパスの設定 putenv ( 'GDFONTPATH='.realpath('.') ); $x = START_X; $y = START_Y; // 入力された文字を書き出し ImageTTFText ( $img, FONTSIZE, 0, $x, $y , $fntc, FONTTYPE, $str ); header ( "Content-type: image/jpeg" ); ImageJpeg ( $img ); ImageDestroy ( $img ); ?>

    • 締切済み
    • PHP
  • 携帯 メールフォーム文字化け

    現在携帯のメールフォームを作成しています。 しかし、半角カナで入力した内容が届いたメールでは???と文字化けをしています。 対処の仕方を教えてください。 なお、 if (!mb_check_encoding($var, 'SJIS')) {・・・} ・ ・ ・ ・ mb_language('ja'); mb_internal_encoding('SJIS'); と記述しています。 なにをのせておけばいいのかわからないため、こちらだけにしておきました。 ぜひよろしくお願いします。

    • ベストアンサー
    • PHP