• 締切済み

携帯で保存すると文字化け

PCと携帯と同じ内容を両方に反映するようにしています。 管理者パネルはPCでは何ら書き込んだり見たりの問題はないのですが、携帯で書き込むと文字化けを起こします。見る分には問題はなさそうです。 <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> です。ちなみにDBは利用していません。 前回のお知らせを呼び出して見る分には携帯でもちゃんと見れるのですが、これを上書きすると文字化けるのです。 色々やってみたもののまったく解決しなので、よろしくお願いいたします。

みんなの回答

回答No.4

こんにちわ。 私はいつもここで質問させていただいている身ですが、 最近携帯を良く扱っているので、何かの足しになればと思い 書き込みをします。 携帯でEUCは一番まずいです、 基本的に携帯ではSJISですが、最近の機種はUTF-8でOKです。 僕はmb_convert_encoding で必ずSJISに変換しています。 どうしても保存するファイルがEUCなら、 表示する時は EUC-JP → SJIS 保存する時は SJIS → EUC-JP このような処理を必ずしています。 あくまで参考までに。

charagon
質問者

お礼

実際かなり昔のプログラムでして、全部を直すことができないことからひとまず、不具合対応だけを優先しております(TT) 参考になります。有難うございました。

すると、全ての回答が全文表示されます。
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.3

ANo.1です。 txt_bikouだけ変換するのでよいのであれば、次の位置でmb_convert_encodingを行ってもよいでしょう。 if (!empty($_POST["txt_bikou"])) { >ここ foreach($_POST as $k => $v) { 元のソースを最大限尊重するのであれば、ちょっと乱暴ですが、$_POST["txt_bikou"]に文字エンコーディング変換後の値を代入するという形になるかと思います。 ところで、マルチバイト文字関連の設定(プログラム中での設定も含む)はどのようになっているのでしょうか。 それから >phpファイルもEUCなんですが携帯で入力する文字エンコーディングは何で違ってしまうのでしょうか? キャリア・機種などによりますが、もともとEUCを扱えない設計である場合があります。一昔前の端末はSJISしか扱えないのが当たり前でした。

charagon
質問者

お礼

丁寧に回答していただき有難うございました。 どうにも改善しないため、未知のphp.iniを色々サイトを見て変更はしてみたのですが、これだけのプログラムで成り立っていないことから、設定を変更するのはよくないと思い、.htaccess を作成して、 あげてみたところ解決をばいたしました。 有難うございました。

すると、全ての回答が全文表示されます。
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.2

ANo.1です。 DBは使用していないのですね。失礼しました。 ただ話としてはあまり変わらないと思います。 HTTP入力の文字エンコーディングががoshirase.datのそれと異なっているのではないでしょうか。 文字エンコーディングを変換するには以下の方法などがあります。 ・mb_convert_encoding関数を使う  http://jp.php.net/manual/ja/function.mb-convert-encoding.php ・php.iniなどでmbstring.http_inputの値を設定する

charagon
質問者

お礼

有難うございます。 mb_convert_encoding関数はやってみてはいたのですが、これも何やらかわらないのですが設定する場所が悪いのでしょうか? 下のファイルにmb_convert_encoding関数を入れても解決しません。 携帯で「書き込む」ボタンをおすと下のプログラムにとびます。 <?php $file_name = "oshirase.dat"; if (!empty($_POST["txt_bikou"])) { foreach($_POST as $k => $v) { if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $array[$k] = $v; extract($array); $file = fopen($file_name, "w") or die("OPENエラー $file_name"); flock($file, LOCK_EX); $txt_bikou = $_POST["txt_bikou"]; $string = str_replace("\n", "<br>", $txt_bikou); $string = str_replace(",", "、", $string); //$string = cnv_dispstr($string); fputs($file, $string); flock($file, LOCK_UN); fclose($file); print "送信を受け付けました。<br>"; 本当に初心者な質問で申し訳ないのですが、 oshirase.datサクラエディターでEUCで保存しています。 phpファイルもEUCなんですが携帯で入力する文字エンコーディングは何で違ってしまうのでしょうか? すいませんが教えてください!

すると、全ての回答が全文表示されます。
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

携帯端末からのHTTP入力とデータベースの文字エンコーディングが合ってないのではないでしょうか。 その場合は、HTTP入力の文字エンコーディングを適宜変換してやる必要があります。

charagon
質問者

お礼

回答有難うございます。 書いたようにDBを使用していません。 oshirase.datに文字が入るようになっています。 いい解決方法がありますでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A