パソコンで入力したお知らせをパソコンと携帯で確認できるようにしたものを、サーバーを移管したところ、携帯で見る方だけ文字化けをおこすようになりました。
<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;
}
}
ちなみにこういうのを入れてみてもだめでした。
すいませんが教えてください。
No.3ベストアンサー
- 回答日時:
> 簡単なプログラムの表示はちゃんと読めました。
> ちなみに携帯のページのPHPに
> header('Content-type: text/html;charset=Shift_JIS');
> をつけてみましたが、文字化けは直りませんでした。
上記の内容を合わせて想像するに、PHPファイルの構成も関係しているような気がします。
実際にブラウザ(携帯ブラウザ)からリクエストされるURLのPHPファイルにheader関数を付ければ直るんじゃないでしょうか。
例えば
http://www.example.com/foo.php ←サンプルなので存在しません
が実際にリクエストされるURLだとして、
foo.phpの中身が
<?php
echo 'こんにちは';
include 'keitai.php' //携帯の処理をするPHPスクリプト
?>
と言う形になっているのであれば、
<?php
header('Content-type: text/html;charset=Shift_JIS');
echo 'こんにちは';
include 'keitai.php' //携帯の処理をするPHPスクリプト
?>
このようにすればちゃんと表示される可能性が高いです。
それともうひとつ別のヒントになりますが、正しいヘッダー情報が吐かれているかどうかを確認する方法です。
Firefoxを利用しているようでしたらLiveHTTPHeadersと言うプラグインでヘッダー情報を見ることが出来ます。
他にもコンソールが利用可能であれば、wgetを利用し、
$ wget -S --spider http://www.example.com/foo.php
のようにすればHTTPヘッダーだけを確認できます。
可能であれば、上記の確認方法も是非試してみてください。
(これでSJIS以外の文字コードであれば、やはりヘッダーに問題があり、SJISであれば、PHP内のエンコード処理に問題があることになります)
また、サーバー管理者などがいれば、その方にも相談された方が良いかと思います。(Apacheなどの設定で回避出来る問題ですので)
やはり、そちらのファイル構成などまで把握できないため、
私からこれ以上の詳細なアドバイスは難しいと思います。
申し訳ございませんが、以上を持ちまして回答は終わりにさせて頂きたいと思います。
有難うございました。
携帯のphpをブラウザ上で確認するとき、文字コードをEUCに変更すると内容が見ることができたので、携帯のPHPのみ、charset=EUC-JPにして、EUCで保存し直しました。
それでひとまず見ることができるようになりました。
色々丁寧に回答いただき有難うございました。
No.2
- 回答日時:
> 教えていただきました一文は携帯の表示のところに付け加えれば
> いいのでしょうか?書き込み画面などにもすべてつけるんでしょうか?
ソースコードの構成が分からないので、なんともいえませんが、
極端な例を挙げるとこういう感じです。
<?php
header('Content-type: text/html;charset=Shift_JIS');
:
:
本当はここまでする必要はないんですが。
echoや画面出力が行われる前であれば大丈夫です。
まずは簡単なプログラムを作ってみて、動作の確認をしてみることをオススメします。
たとえば
<?php
header('Content-type: text/html;charset=Shift_JIS');
echo '日本語出るかな 教えて!goo';
?>
これが正しく表示されるかどうか、確認しみてはどうでしょうか。
丁寧な回答いただき有難うございますm(__)m
簡単なプログラムの表示はちゃんと読めました。
PCの管理者画面より書き込んだものを、PCと携帯で見ることができる形です。以下はその携帯の出力する場所の内容です。
この部分のみ文字化けします。
<?php$count=0;
while(($count<KT_MAX) && ($row=mysql_fetch_array($res,MYSQL_ASSOC))){
$db_date=$row["kdate"];
$db_naiyou=$row["naiyou"];
print $db_naiyou." (".$db_date." 登録)"."<br><br>";
$count=$count+1;
}
?>
ちなみに携帯のページのPHPに
header('Content-type: text/html;charset=Shift_JIS');
をつけてみましたが、文字化けは直りませんでした。
No.1
- 回答日時:
おそらくPHP側の問題ではなく、Webサーバー側の問題のようです。
出力したい文字コードはShiftJISのようですので、WebサーバーのContent-Typeが"text/html;charset=Shift-JIS"になっているかどうか確認してみてはどうでしょうか。
Webサーバーの確認が難しい場合は、とりあえずPHPのソースコードに以下の一文を追加してみてください。
header('Content-type: text/html;charset=Shift_JIS');
※画面出力前に追加する必要があります(よく分からない場合はソースコードの先頭に追加してみてください)。
なお、文字コードの対応は以下の優先順位で行うのが良いかと思います。
1.Webサーバーのcontent-typeを変更
2.それが駄目なら.htaccessでcontent-typeを変更
3.それも駄目なら上記header関数部分を別のPHPファイルとして作成し、全てのPHPコードでそれをinclude(require)する。
有難うございます。
ちなみに携帯のPHP表示部分のみ文字化けを起こしています。
教えていただきました一文は携帯の表示のところに付け加えればいいのでしょうか?書き込み画面などにもすべてつけるんでしょうか?
初心者ですいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでセッション導入後に初めて...
-
文字化けについて
-
UTF8のページでIEがシフトJISを...
-
携帯の文字化け
-
wordpressがMySQLに日本語デー...
-
EUC-JPのサイトをSHIFT-JISに変...
-
フォントの色を変えるには?
-
PHPのif文でその処理を途中で抜...
-
リンク先を隠す方法はないでし...
-
copy() で属性保存
-
onedrive にexcelファイルをア...
-
PHP session_destroyとsession...
-
「クラス関数」「メンバ関数」...
-
別PHPファイルに変数を渡す
-
VBSの「MsgBox」について
-
3つ以上の論理積は利用可能なの...
-
「@$変数」の「@の意味は?」
-
CFileDialogの最初のディレクト...
-
BASP21メール送信(SMTP-AUTH認...
-
htmlをphpにするにあたってデメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EclEmmaレポートのエクスポート...
-
PHPで韓国語の表示がうまくいき...
-
PHPExcelバッファへの書き込み...
-
文字コード変えたら、fopenでき...
-
HTTPヘッダはメタタグにも記述...
-
Eclipseで文字化け
-
csvファイル出力時に文字化けし...
-
phpで動的タイトル
-
文字集合範囲外の文字とパーセ...
-
phpログファイルの文字化けにつ...
-
PHPで「®」や特殊文字のエスケープ
-
phpフォームで文字化け
-
Google Chromeで文字化け
-
発生した文字化けに対する対処
-
サーバーにアップすると文字化...
-
GEEKLOG(ギークログ) 文字化け
-
PHP time()に関しての質問です
-
文字化けについて
-
UTF8のページでIEがシフトJISを...
-
batファイルでうまく動かないプ...
おすすめ情報