PHPの文字化けで困っています。

連絡が取れない別の方が作成したPHPを編集すると文字化けしてしまいます。

charset="utf-8"
と記述があり、ブラウザはUTF-8で正常に表示しています。
エディタもUTF-8のファイルと判定しており、UTF-8で開くまでは良いのですが、編集せず、そのままUTF-8で保存しただけで文字化けします。

考えられる原因と解決方法が分かりますでしょうか。
よろしくお願い致します。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2016/04/14 06:51:12
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント20pt

BOM の有無が変わっていないでしょうか。
http://naifix.com/utf-8-bom/

id:uwao

有り難うございます。
残念ながらUTF-8Nでも文字化けしています。

2016/04/12 14:07:02
id:okumuraa1 No.2

回答回数1ベストアンサー獲得回数0

ポイント20pt

私の経験ですが、レンタルサーバーにアップロードした際に文字化けしてしまい、
php.iniの設定を変更して文字化けを解消したことはあります。

id:uwao

有り難うございます。
元のPHPは文字化けしていないので、PHPの文字コードの問題と思っておりますが、サーバー管理者に相談してみたいと思います。

2016/04/12 14:14:12
id:gizmo5 No.3

回答回数504ベストアンサー獲得回数141

ポイント20pt

編集に使っているエディタが保存するときに文字コード変換をしている可能性はないでしょうか。
編集せずに保存をした後のファイルの文字コードを確認してください。

id:uwao

有り難うございます。
保存時に文字コードを指定してありますし、保存後のファイルも確認しています。
残念ながら、UTF-8、UTF-8Nだけでなく、念のためUnicode、Unicode-N、SJIS、EUC、JIS、Base64で試して、全て文字化けするので困っている状況です。

2016/04/12 14:12:45
id:uwao

質問者から

uwao2016/04/14 12:23:42

PHPの内容や出力するHTMLは、複数の人がその場しのぎで記述したような状態です。

TITLEの後にMETAタグがあり、CSSをファイル指定し、METAがあり、CSSを記述し、またMETAがあり、長文のCSSがあり、JavaScriptがいくつか記述して・・・

charsetの記述もいくつかあり、CSSでは同じclassを何度も記述、PHPもコメントアウトしたり、途中は生きていたり、と、まともには読めず、整理も大変な状態です。

こういった事が原因なのかもしれないのですが、修正が必要な部分が1か所だけですし、非常に複雑ではあっても現在のPHPは文字化けしていないので、文字化けさえ解消出来ればと思っております。

もちろん、作り直す事をご提案していますが、取り急ぎ1か所だけ修正してほしいとの要望です。

id:svient No.4

回答回数15ベストアンサー獲得回数3

ポイント20pt

1.スクリプト先頭でheader関数を実行させると文字化けが解消されることがあります。

<?php
header("Content-Type: text/html; charset=UTF-8");
?>


2.文字コードを変えてみます。もしかしたら文字コードを変えることで文字化けが解消されるかもしれません。

3.FTPでアップロードするときに別のコードに変換されているのかもしれませんので確認してください。

id:uwao

有り難うございます。
残念ながら、「1」でも同様の結果でした。
EUCやShift-JISなどでも試しましたが、文字化けや正常に表示されなくなってしまいました。

FTPも問題無いようです。
アップロードしたファイルをダウンロードし、エディタで開くとUTF-8と認識していました。

2016/04/14 06:39:09
id:svient

アップローダー等で問題のPHPファイルを提供してくれれば文字化けをしないようにしてみますよ。

あとダウンロードする際、他の文字コードが変換されてUTF-8になっている可能性もあります。

2016/04/14 16:47:08
id:muranet No.5

回答回数8ベストアンサー獲得回数0

ポイント20pt

まず確認ですが、
(1)拡張子がphpであるファイルをエディタで編集したら、そのファイルが文字化けしてしまうのか
(2)拡張子phpのファイルをCGIとして実行した結果をブラウザでみたものが文字化けしているのか
どちらでしょうか?

(1)の場合は、ファイルのバックアップを取ってから
・ファイルの前半半分を残し、後半半分を消して保存してみる。文字化けが発生するかどうか調査。
・文字化けが発生した場合はさらに前半半分を残し、上4分の1くらいにして保存。文字化けするか確認。
・・のようなことを繰り返すと、文字化けの原因となっている行が分かりそうです。

あと、エディタは何を使っていますでしょうか。エディタを複数で試すこともおすすめします。

id:uwao

(1)です。
PHPのファイルをUTF-8で開き、編集せず、そのままUTF-8で同じファイル名で保存し、アップロードするだけで文字化けします。
(出力されたHTMLのソースが文字化けしています)
UTF-8のPHPを何度も作成しているエディタですが、このPHPは別のソフトで作成されたため、何か相性が合わなかったのかもしれません。

2016/04/14 06:50:23
id:uwao

質問者から

uwao2016/04/14 16:20:24

皆さま、有り難うございました。

個人的には解決方法を知りたいのですが、元のファイルは使用せず、作り直す事になりました。

  • id:vsw
    ナムタカ/NamTaka 2016/04/14 16:55:11
    「meta name="keywords"」や「meta name="description"」の前に「meta http-equiv="Content-Type" content="text/html; charset=UTF-8"」を置けば解決する可能性あり。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません