連絡が取れない別の方が作成したPHPを編集すると文字化けしてしまいます。
charset="utf-8"
と記述があり、ブラウザはUTF-8で正常に表示しています。
エディタもUTF-8のファイルと判定しており、UTF-8で開くまでは良いのですが、編集せず、そのままUTF-8で保存しただけで文字化けします。
考えられる原因と解決方法が分かりますでしょうか。
よろしくお願い致します。
私の経験ですが、レンタルサーバーにアップロードした際に文字化けしてしまい、
php.iniの設定を変更して文字化けを解消したことはあります。
有り難うございます。
元のPHPは文字化けしていないので、PHPの文字コードの問題と思っておりますが、サーバー管理者に相談してみたいと思います。
編集に使っているエディタが保存するときに文字コード変換をしている可能性はないでしょうか。
編集せずに保存をした後のファイルの文字コードを確認してください。
有り難うございます。
保存時に文字コードを指定してありますし、保存後のファイルも確認しています。
残念ながら、UTF-8、UTF-8Nだけでなく、念のためUnicode、Unicode-N、SJIS、EUC、JIS、Base64で試して、全て文字化けするので困っている状況です。
PHPの内容や出力するHTMLは、複数の人がその場しのぎで記述したような状態です。
TITLEの後にMETAタグがあり、CSSをファイル指定し、METAがあり、CSSを記述し、またMETAがあり、長文のCSSがあり、JavaScriptがいくつか記述して・・・
charsetの記述もいくつかあり、CSSでは同じclassを何度も記述、PHPもコメントアウトしたり、途中は生きていたり、と、まともには読めず、整理も大変な状態です。
こういった事が原因なのかもしれないのですが、修正が必要な部分が1か所だけですし、非常に複雑ではあっても現在のPHPは文字化けしていないので、文字化けさえ解消出来ればと思っております。
もちろん、作り直す事をご提案していますが、取り急ぎ1か所だけ修正してほしいとの要望です。
1.スクリプト先頭でheader関数を実行させると文字化けが解消されることがあります。
<?php
header("Content-Type: text/html; charset=UTF-8");
?>
2.文字コードを変えてみます。もしかしたら文字コードを変えることで文字化けが解消されるかもしれません。
3.FTPでアップロードするときに別のコードに変換されているのかもしれませんので確認してください。
有り難うございます。
残念ながら、「1」でも同様の結果でした。
EUCやShift-JISなどでも試しましたが、文字化けや正常に表示されなくなってしまいました。
FTPも問題無いようです。
アップロードしたファイルをダウンロードし、エディタで開くとUTF-8と認識していました。
アップローダー等で問題のPHPファイルを提供してくれれば文字化けをしないようにしてみますよ。
あとダウンロードする際、他の文字コードが変換されてUTF-8になっている可能性もあります。
まず確認ですが、
(1)拡張子がphpであるファイルをエディタで編集したら、そのファイルが文字化けしてしまうのか
(2)拡張子phpのファイルをCGIとして実行した結果をブラウザでみたものが文字化けしているのか
どちらでしょうか?
(1)の場合は、ファイルのバックアップを取ってから
・ファイルの前半半分を残し、後半半分を消して保存してみる。文字化けが発生するかどうか調査。
・文字化けが発生した場合はさらに前半半分を残し、上4分の1くらいにして保存。文字化けするか確認。
・・のようなことを繰り返すと、文字化けの原因となっている行が分かりそうです。
あと、エディタは何を使っていますでしょうか。エディタを複数で試すこともおすすめします。
(1)です。
PHPのファイルをUTF-8で開き、編集せず、そのままUTF-8で同じファイル名で保存し、アップロードするだけで文字化けします。
(出力されたHTMLのソースが文字化けしています)
UTF-8のPHPを何度も作成しているエディタですが、このPHPは別のソフトで作成されたため、何か相性が合わなかったのかもしれません。
有り難うございます。
2016/04/12 14:07:02残念ながらUTF-8Nでも文字化けしています。