• 締切済み

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

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

  • PHP
  • 回答数4
  • ありがとう数6

みんなの回答

回答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

  • 更新を繰り返すと文字化けが起きてしまいます...

    お世話になります PHP4でHPを作成しています 文字化けに関して質問させて下さい PHPで作成したページの更新をすると 5回に1回の割合で文字化けが発生してしまいます EUC-JPで作成したPHPファイルを表示するので ファイルの先頭に  <? header(\"Content-Type: text/html;charset=EUC-JP\"); ?>  <html lang=\"ja\">  <head>  <meta http-equiv=\"content-type\" content=\"text/html; charset=EUC-JP\">  <meta http-equiv=\"content-style-type\" content=\"text/css\">  <meta http-equiv=\"content-script-type\" content=\"text/javascript\"> と指定してから 他の処理が実行されるようにしているのですが…。 何回か更新を繰り返すと文字化けを起こしてしまいます。 文字化けを起こした時にソースを表示すると 日本語が正しく見れる状態になっていたので シフトJISになってしまっているようで… 宜しくお願いします

    • 締切済み
    • PHP
  • 文字化けを解決したい

    サイトを持つ管理人です。タグなどについてはかなり初心者です。 iPhoneなどの海外OSから閲覧すると文字化けしてしまうという報告を受けて、タグを色々いじっています。 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">を追加してみたのですが、これ単品だと私のPCから閲覧したときに文字化けしてしまいました。 そのため<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">と<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">を並べてみたのですが、これで海外OSからも文字化けを起こさなくなったのでしょうか? こんな感じのタグです↓ <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META NAME="GOOGLEBOT" CONTENT="NOINDEX, NOFOLLOW,NOARCHIVE"> <META NAME="ROBOTS" CONTENT="NOARCHIVE,NOINDEX,NOFOLLOW"> <meta name="viewport" content="width=380, maximum-scale=1.6" /> <title>練習</title> </head> 全てのスマホからもサイトを閲覧出来るようにするにはどうしたら良いでしょうか?それとも、全てのスマホから文字化けを防ぐことは不可能なのでしょうか? お知恵をお貸しください。

  • HTML・PHPの文字化け

    こんにちは。 PHPとMySQLを使ってショッピングカートを作ろうと思ったのですが、しょっぱなから躓いてしまいました・・・。 index.htmlでメタを <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> とeuc-jpにしたのですが、サーバーにアップすると文字化けしてしまいます。 表示のエンコードで確認するとシフトーJisになっています。eucにするとちゃんと表示されるのですが、更新するとやはり文字化けします。PHP・MySQLがeucですので、困っています。 どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。

    • ベストアンサー
    • HTML
  • 携帯での文字化け

    PCサイトと携帯サイトを同じファイルで作成しています。 アップロードしたファイルは全てsjisで保存し、<Meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> というタグも入れているのですが、一部の携帯では文字化けがおこっているようです。 私自身の携帯(docomo)では文字化けはおこっていないので、大丈夫だと思っていたのですが……。 それぞれの携帯会社のホームページを見た結果、文字コードはsjisがいいだろうと判断したのでそのようにしています。 文字化けの原因が分からなくて困っています。 どうすれば全ての携帯で文字化けしないようにできるのでしょうか?

  • 文字化けについて

    ホームページの文字が化けてしまいます。 特に、一番上のタイトル部分が化けます。 <meta http-equiv="Content-Type" Content="text/html; charset=euc-jp"> をいれても化けます。何が原因なんでしょうか?

  • 文字化け

    携帯用サイトを作成中です。 PCでの観覧は問題ないのですが 私自身の携帯から観覧すると全て文字化けになってしまいます。 色々調べて下記のタグを入れる等しましたが 今度はPCからの観覧も文字化けしてしまいました。 <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> サーバー:ロリポップ 原因と改善策を教えて下さい。 お願い致します。

  • 携帯用HPの文字化け。。

    携帯用のウェブサイトを作成しています。 手持ちのi-mode/FOMAでプレビューすると正常に表示されるのですが EZ-webでプレビュー(openwave sdk 6.2K使用)すると、全体的に文字化けしてしまいます。 文字コードが関係している事が分かり、HTML内のメタ情報をEUC-JPからShift_JISへ書き直しました。 すると何故か今度はFOMAで文字化けし、EZ-webで正常表示という結果になり、四苦八苦しております(;´Д`) 修正前は以下の通りです。 <?php declare(encoding="EUC-JP"); header('Content-Type: text/html; charset= EUC-JP'); session_start(); $sid = session_id(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP">   ・   ・   ・ テスト時に修正したのは、<META~~ charset=EUC-JP">のEUC-JP部分です。 PHPには内部処理のみをさせているので、修正を加えませんでした。 ( header('Content-Type: text/html; charset= EUC-JP'); の部分です) i-modeとez-webの両方で文字化けさせない為には、どの様な修正をすれば良いのでしょうか。 ご存知の方、お教え下さい。どうぞ宜しくお願いします。m(__)m

    • ベストアンサー
    • HTML
  • 「塙」と言う文字が文字化けしてしまう

    表題の件で質問させて下さい。 PHPで文字コードをEUCにしたwebアプリケーションを構築しております。 特に何の問題もなく動いていたと思っていたのですが、フォーム等で「塙」と言う文字を入力して、submitした値を表示させると文字化けしてしまいます。 これを表示させるには、どのような対処を行えば良いのでしょうか? いろいろと試してみた結果、 「塙あ」のように、後ろに全角文字が入るとキチンと文字化けせずに表示されるのは確認しました。 (「塙1」のように後ろに半角文字があると「?1」になってしまいます) どなたか対策をご存知の方、いらっしゃいましたらご教授お願いします。 下記の対策は行っています。 ・header("Content-type: text/html; charset=EUC-JP"); ・<meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> ・ファイルをEUC-JPで保存

    • ベストアンサー
    • PHP
  • HTMLのソースの文字化けを防ぐ方法

    Win2000とIE6.0の環境であるサイトを開き →エンコード→「自動選択」、もしくは  「日本語(EUC)」 →ソースの表示 とやっても文字化けします。 文字化けしないようにソースを開きたいです。 この問題について対処法が分かる方がおりましたら、お返事頂ければ嬉しいです。 ちなみに、開いたソースの <META http-equiv=Content-Type content="text/html; charset=EUC-JP"> は読み取れます。

    • ベストアンサー
    • HTML
  • 携帯の文字化け

    パソコンで入力したお知らせをパソコンと携帯で確認できるようにしたものを、サーバーを移管したところ、携帯で見る方だけ文字化けをおこすようになりました。 <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> です。 // 表示文字コード define("ENCDISP", "shift_jis"); // データベース文字コード define("ENCDB", "EUC-JP"); // ========================================================= // 表示する文字コードに変換 // ========================================================= function cnv_dispstr($string) { // 文字コードを変換する $det_enc = mb_detect_encoding($string, "EUC-JP, SJIS"); if ($det_enc and $det_enc != ENCDISP) { return mb_convert_encoding($string, ENCDISP, $det_enc); } else { return $string; } } ちなみにこういうのを入れてみてもだめでした。 すいませんが教えてください。

    • 締切済み
    • PHP

専門家に質問してみよう