dポイントプレゼントキャンペーン実施中!

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

A 回答 (4件)

ANo.1です。



txt_bikouだけ変換するのでよいのであれば、次の位置でmb_convert_encodingを行ってもよいでしょう。

if (!empty($_POST["txt_bikou"])) {
>ここ
foreach($_POST as $k => $v) {

元のソースを最大限尊重するのであれば、ちょっと乱暴ですが、$_POST["txt_bikou"]に文字エンコーディング変換後の値を代入するという形になるかと思います。

ところで、マルチバイト文字関連の設定(プログラム中での設定も含む)はどのようになっているのでしょうか。

それから
>phpファイルもEUCなんですが携帯で入力する文字エンコーディングは何で違ってしまうのでしょうか?
キャリア・機種などによりますが、もともとEUCを扱えない設計である場合があります。一昔前の端末はSJISしか扱えないのが当たり前でした。
    • good
    • 0
この回答へのお礼

丁寧に回答していただき有難うございました。

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

有難うございました。

お礼日時:2009/06/19 20:25

こんにちわ。



私はいつもここで質問させていただいている身ですが、
最近携帯を良く扱っているので、何かの足しになればと思い
書き込みをします。

携帯でEUCは一番まずいです、
基本的に携帯ではSJISですが、最近の機種はUTF-8でOKです。
僕はmb_convert_encoding で必ずSJISに変換しています。

どうしても保存するファイルがEUCなら、

表示する時は EUC-JP → SJIS

保存する時は SJIS → EUC-JP

このような処理を必ずしています。

あくまで参考までに。
    • good
    • 0
この回答へのお礼

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

参考になります。有難うございました。

お礼日時:2009/06/19 20:28

ANo.1です。



DBは使用していないのですね。失礼しました。
ただ話としてはあまり変わらないと思います。
HTTP入力の文字エンコーディングががoshirase.datのそれと異なっているのではないでしょうか。

文字エンコーディングを変換するには以下の方法などがあります。
・mb_convert_encoding関数を使う
 http://jp.php.net/manual/ja/function.mb-convert- …
・php.iniなどでmbstring.http_inputの値を設定する
    • good
    • 0
この回答へのお礼

有難うございます。
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なんですが携帯で入力する文字エンコーディングは何で違ってしまうのでしょうか?

すいませんが教えてください!

お礼日時:2009/06/19 14:33

携帯端末からのHTTP入力とデータベースの文字エンコーディングが合ってないのではないでしょうか。


その場合は、HTTP入力の文字エンコーディングを適宜変換してやる必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/06/19 11:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!