
皆様
XMLをブラウザで表示させたときの文字化けで困っています。
もうちょっと詳細な話をしますと、あるアプリケーションの初期設定ファイル(以下、INI.XML)の挙動がおかしく、動作が不安定な状態になっております。
なお、このアプリケーションは.NETをプラットフォームにしています。
動作環境は、WindowsVista Business SP2(32bit)です。
INI.XML(文字コードはUTF-8)をメモ帳で開いた内容は、
-------------------------------------------------
<?xml version="1.0"?>
<MyConfig>
<Server>
<Connect>Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=C:\広島\Abc.MDB</Connect>
</Server>
</MyConfig>
-------------------------------------------------
こんな具合です。
このINI.XMLを、例えばc:\tmpというフォルダに入れ、ダブルクリックするとブラウザ(IE)でXMLの内容がずらっと表示されますが、表示内容はメモ帳の内容とほぼ同一です。
違いといえば、
・\がバックスラッシュになる
・タグ等に色がつく
といった程度です。
次に、このINI.XMLを件のアプリケーションが入っているフォルダ(例:C:\Program Files\システム)に入れて、ダブルクリックしてブラウザで表示させると、XMLソース中の「広島」が「三次」に化けてしまいます。
ブラウザ上の「C:\広島\Abc.MDB」部分(\は実際はバックスラッシュ)をコピーしてメモ帳に貼り付けると、「C:\三次\Abc.MDB」という文字列が入力されます。
しかし、ブラウザからソースを表示させると、正しく「広島」となっています。
面白いことに、INI.XMLをINI-.XMLという名前に変更してブラウザで表示させると、「広島」は「広島」のままです。
ブラウザのキャッシュをクリアしてみたりもしましたが、状況に変化はありません。レジストリで「三次」を検索しましたが、ヒットしません。
このアプリケーションがINI.XMLをそのままテキストで読み込めば問題ないのでしょうが、なぜかブラウザ表示内容で読み込むみたいで、化けた「三次」を読み込んでしまいます。
見てのとおりXMLの内容はデータベースへの接続文字列ですので、アプリケーションは見当違いのところへ接続しようとして、まともに動作しません。
アプリケーションを再インストールしても状況は同じです。
しかし、WindowsXP上では、この問題は発生しません。
何が問題なのでしょうか。よろしくご指導ください。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>この部分にエンコード情報を書き加えたりしましたが、状況は同じです。
ですから、エンコードを書き換えるだけでなく、文字コードセットも合わせる必要があるということです。
例えば、以下の文字列をWindowsのメモ帳にて文字コードANSIで保存します。
this app can break
そうすると、Unicodeに解釈(変換?)して保存され文字化けします。(BOMが付加される)
※環境:WindowsXP、メモ帳にて検証
理由はアプリケーションによってBOMの対応が必ずしも一律でないからです。
ですから、アプリケーションによる文字コード対応をきちんと整理する必要があるということです。
http://support.microsoft.com/kb/837192/ja
この回答への補足
WindowsXP上のメモ帳で、「this app can break」という文字列を入力し、これを文字コードANSIで「test.txt」というファイル名で保存しました。
この「test.txt」をWindowsXP上のメモ帳で開いても、WindowsVista上のメモ帳で開いても、文字化けしません。
さすがに、MIFES8でUTF-16とUTF-32で開くと化けましたが。
文字コードの問題ではないと思うのですが。
ファイル名を変更する(つまり中身もそのまま)と化けなかったり、ファイル名はそのまま(つまり中身もそのまま)で別のフォルダ上で開くと化けなかったりするのです。
WindowsVistaでは、「フォルダによって標準の文字コードが違う」なんて事があるのでしょうか。それも、漢字二文字だけ。
今、別パターンを試してみました。
Data Source=C:\広島\Abc.MDB
部分を、
Data Source=C:\○○テスト\Abc.MDB
としてみたのです。(○○は任意の漢字二文字)
アプリケーションが入っているフォルダ上では、かたくなに○○だけが「三次」に化けます。
このアプリケーションは、三次市で誕生したのか?
No.3
- 回答日時:
>エンコードに問題があるとしても・・・、ファイル名を変更するだけで表示状況が変化するという理由を説明できないのではないでしょうか。
唐突な質問という感じもあるのですが、まあ、同根と思いますので。
ファイル名を変更というよりは「ファイルを保存する」と表示状況が変化するのではありませんか?
#変更することによって保存を行っているから
ブラウザで表示する場合はあくまでエンコーディングの出力結果をブラウザで表示しているだけ。
ファイルとして保存すると、アプリケーションによって解釈された文字コードで保存されます。
つまり、元ファイル・ブラウザ表示・出力ファイルは等価ではない。
普通のWebアプリケーションでブラウザ表示するだけならそれほど気にしなくても済むけど、文書として書き出す場合はきちんと意識しなければなりません。
http://www.atmarkit.co.jp/fxml/askxmlexpert/016u …
この回答への補足
ファイル名の変更は、件のアプリケーション上で行っているのではなく、エクスプローラで行っています。
INI.XMLでは「広島」が「三次」に化け、(エクスプローラ上で)INI-.XMLにすると「広島」は「広島」のままで、再度(INI-.XML)からINI.XMLに変更すると「広島」が「三次」に化けます。
悲しいくらいに、面白いでしょう?
>つまり、元ファイル・ブラウザ表示・出力ファイルは等価ではない
そうなんですよ。元ファイルをそのまま読んでくれるのならば、何の問題もないのです。
><?xml version="1.0"?>
この部分にエンコード情報を書き加えたりしましたが、状況は同じです。
No.2
- 回答日時:
「XMLページを表示できません」「テキストの内容に無効な文字が見つかりました。
」色々な理由があるのですが、エンコーディングがUTF-8なのにS-JISで書かれているそのようになるケースもあったと思います。
BOMをつけても実際の文字コードが違うと推測します。
http://ja.wikipedia.org/wiki/UTF-8
XSLがちゃんとUTFで書かれているのXMLをSJISにしたり、混在していませんか?
この回答への補足
エンコードは、間違いなくUTF-8です。
エンコードに問題があるとしても・・・、ファイル名を変更するだけで表示状況が変化するという理由を説明できないのではないでしょうか。
No.1
- 回答日時:
メモ帳で読めるということはファイルがSJISで書かれているということ。
※メモ帳はUTF-8が扱えない
UTF-8にエンコーディングするならファイルもUTF-8で書くほうが望ましいでしょう。
そもそもエンコーディングの記述もないように見えます。
この回答への補足
回答ありがとうございます。
INI.XMLはBOM付きUTF-8で記述しております。MIFES8他数種類のエディタで確認しました。
そのINI.XMLを、MIFES8を使ってSHIFT-JISエンコードで保存し、ブラウザで表示させようとすると、「XMLページを表示できません」「テキストの内容に無効な文字が見つかりました。」という表記が出ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Windows 10 パソコン初期化の件です 2 2022/06/05 11:05
- Ameba(アメーバブログ) アメブロは、HTMLのタグの入力を許さないブログ・サイトですか? 1 2023/06/18 18:48
- ホームページ作成・プログラミング アメーバ・ブログは"HTMLタグ"を許可してないのですか? 2 2023/06/17 21:08
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- HTML・CSS ホームページのHTMLサイトマップを自動作成する方法を探しています。 1 2023/05/17 21:36
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- WordPress(ワードプレス) WordpressでYouTubeの埋め込みができない。 1 2022/10/26 01:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macのメールファイルに一括で拡...
-
HDDの文字化けをconvmvを使って...
-
emacs で英字の禁則はできない...
-
Macで簡単に改行を解除したい
-
SolarisからLinuxへコピーした...
-
ファイル名の一括リネーム
-
Windows版でviのようなエディタ
-
LinuxMintで,Windows時代に作成...
-
r\\ command not found
-
dos2unix(コード変換)をしな...
-
ときどきSafariでここをみてる...
-
改行を表す文字はありますか?
-
アイコンの名前の改行
-
terapadでEUCがSJISになってしまう
-
Windowsで作成した新しいテキス...
-
英語版WindowsでのCSVファイル...
-
WinとMacで互換性のあるテキス...
-
au 携帯のメール(vMessage, .v...
-
テキストファイルにページ番号...
-
winの.txtデータをmacで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macで簡単に改行を解除したい
-
メモ帳での一括たて列選択
-
【文字コード】コピー&ペース...
-
LinuxMintで,Windows時代に作成...
-
テキストで特定の文字列を含む...
-
FTP 文字化け
-
WinとMacで互換性のあるテキス...
-
コピー&ペースト時の文字コー...
-
ファイル名の付け方(中央揃え)
-
MS-DOSテキストファイルっ...
-
ドラッグ&コピー→デスクトップ...
-
アイコンの名前の改行
-
htmlファイルが編集できない
-
RedHatで使えるエディタ
-
メモ帳の出力形式
-
.batファイル作成 mailto: コ...
-
XMLの表示文字化け
-
UTF-8 環境をSJIS化した後の改...
-
制御文字について
-
Linuxで書いたプレーンテキスト...
おすすめ情報