プロが教える店舗&オフィスのセキュリティ対策術

phpでXMLを生成しています。
XMLをエディターで見るとほとんどの文字は正常に表示されているのですが、一部の文字だけが文字化けしています。
具体的には 究、岩、ど の三つの文字だけです。
その三つの文字はいずれも同じ文字に文字化けしています。
cを丸で囲ったコピーライトの表記に使われる文字に似ています。
上記の文字のみなにかコピーライトに引っかかっているのでしょうか。

googleで色々と調べてみましたが、他の文字での文字化けの事例はあるのですが、上記の文字での事例は見つかりませんでした。
どなたかご教示願えませんでしょうか。

phpのバージョンはPHP Version 5.3.3です。

phpのあるディレクトリと同じディレクトリにhtaccessで以下の記述を入れています。
php_value mbstring.internal_encoding UTF-8
php_value default_charset UTF-8
php_value mbstring.http_output UTF-8
php_value mbstring.language UTF-8
php_value mbstring.http_input auto
php_flag mbstring.encoding_translation On
php_value output_handler mb_output_handler

A 回答 (3件)

あなたの言う「エディター」とは具体的に何ですか?質問をする際にはそういう基本的なことは必ず書くようにしましょう。


※もしかしたらこの回答で解決してしまうかもしれませんが、それでもできればこの回答の補足かお礼にも書いてくださいね。

あなたの挙げた3文字のUTF8での文字コードは
究:E7A9B6
岩:E5B2A9
ど:E381A9
です。で、コピーライト記号はA9です。つまりA9が含まれている文字は文字化けするのではないかと思います。

なのでその調子だと「ラ緩革塩穏恩温」あたりも化けるのではないかと思います。

じゃぁ対策はというと、エディタが何なのかわからないのでなんとも言えませんが、もしかしたらそのエディタのバグなのかもしれません。もしかしたらバグではなく使い方が悪いのかもしれません。もしかしたらエディタで開く前にすでに文字コードが破壊されているのかもしれません。そのどれなのかは分かりません。

が、おそらくはそのどれかでしょう。

エディタが何なのか分からないので、推測の推測の推測になってしまいますが、エディタのバグのせいならエディタを変えることで解決するでしょう。その前に壊れているのなら、プログラムが間違っているから壊れているのです。プログラムをを見直し、どの時点で文字コードが壊れているのか特定しましょう。

この回答への補足

pringlez様

ご回答ありがとうございます。
ラ緩革塩穏恩温 を試してみました。
おっしゃるとおり、すべて文字化けしました。

エディタにつきまして、説明不足ですみません。
RSSのフィード(XML)を自動生成するPHPでdircaster.phpというプログラムがあります。
config_inc.phpに入力した内容をXMLにしてくれます。
エディターとはdircaster.phpをブラウザで開いた時に、ブラウザのメニュー > 表示 > ソースで開くメモ帳のことです。

pringlezさんのおっしゃることに当てはめてみると、config_inc.phpからdircaster.phpへ送る段階でなにか原因がありそうなのですが、見つけられずにいます。

補足日時:2014/11/07 01:08
    • good
    • 0

IE11, Firefox32, Chrome38 でXML表示を試してみましたが、全て正しく表示されました。

ブラウザ上での通常表示もソース表示でも同様です(画像参照)。

ソース表示でメモ帳が起動するってことはめちゃくちゃ古いIE7以下を使ってますね…バグだけで済むならまだしも、脆弱性だらけでかなり危ないので早急にアップデートしたほうがいいと思います…
「一部の文字のみ文字化けします」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとうございました!
無事に解決いたしました!

お礼日時:2014/11/07 16:46

> エディターとはdircaster.phpをブラウザで開いた時に、


> ブラウザのメニュー > 表示 > ソースで開くメモ帳のことです。

うーん、状況の伝わり具合が相変わらず低すぎるのですが。

・あなたの言うブラウザとは何ですか?IE?FireFox?Chrome?それ以外?
・そのブラウザのバージョンは?
・ブラウザで表示したXMLについてそのソースを開いている?
・ブラウザで表示したときには化けないの?
・ソースだけが化けるの?
・メモ帳とはWindowsに付属しているnotepad.exeのこと?
・他のブラウザだったらどうなるの?

>config_inc.phpに入力した内容をXMLにしてくれます。

config_inc.phpがどういうものなのかよく分かりませんけど、
それと似たようなものをシンプルなPHPで書いたら結果はどうなりますか?
    • good
    • 0
この回答へのお礼

ありがとうございました!
直りました。

config_inc.phpがUTF-8で書かれているのに対し、dircaster.phpがなぜかシフトJISで書かれていたことが原因のようでした。
編集用に使っていたDreamWeaverでdircaster.phpのエンコードをUTF-8で保存し直したところ、すんなりと直りました。

親身に相談に乗ってくださいまして、ありがとうございました!

お礼日時:2014/11/07 16:45

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