DOBON.NET DOBON.NETプログラミング掲示板過去ログ

XMLファイルのUTF-8(Bom)について

環境/言語:[vb.net Framework 1.1]
分類:[.NET]

いつも勉強させて頂いています。

自作のXMLファイルからデータを読み込む処理を
作成しています。

XMLファイル保存時のUTF-8とUTF-8(BOM)の違いで
動作に影響が出たりしますでしょうか。
また、一般的にはどちらを利用するものなのでしょうか。

宜しくお願いします。
BOMを意識していないアプリケーションではBOMが付いていると誤動作するかもしれません。
BOMがあることを前提としているアプリケーションではBOMがないと誤動作するかもしれません。

一般的にはBOMをつけないとわからない場合にはつけます。XMLなどは内部のXML宣言を見れば判別可能です。
ただしBOMはつけるべきではないという人の方が多いかもしれません。
中博俊さん

回答ありがとうございます。

> BOMを意識していないアプリケーションではBOMが付いていると
>誤動作するかもしれません。
> BOMがあることを前提としているアプリケーションではBOMがないと
>誤動作するかもしれません。

XML読み取り時の文字コード指定によって変わるという事でしょうか。

>XMLなどは内部のXML宣言を見れば判別可能です。
XMLファイルの先頭行の記述で
BOM付きかどうかわかるのでしょうか。

 <?xml version="1.0" encoding="utf-8"?>


質問ばかりで申し訳ありません。
宜しくお願い致します。
> XML読み取り時の文字コード指定によって変わるという事でしょうか。
その XML を、何を使って処理するのかによるでしょう。
本来は、UTF-8はバイト順を気にする必要が無いので、BOM が不要なのですが、
Unicodeである事を明示するために BOM 付が使われる処理系もあります。

結局のところ、最終的には XMLプロセッサ(XML parser等)の実装次第なので、
実際に、BOM付/BOM無し両方の XML ファイルを渡してみて、期待通りの動作に
なるかどうかをチェックしてみてください。

# 実際、BOM付UTF-8を認識しない処理系を見たことがありますし、その逆に、
# BOM無UTF-8を、CP932と誤認識するといったバグを抱えている物もあるようで。

>  <?xml version="1.0" encoding="utf-8"?>
先頭に空白を含めてはいけませんよ。(BOMを配置するのはOK)
また、UTF-8 および UTF-16 の場合は、先頭のXML宣言を省略できます。

なお、『BOMを付けなければならない』のは、UTF-16 の場合だけです。
中博俊さん
魔界の仮面弁士さん

回答、指摘して頂きまして、
ありがとうございます。

両方で動作確認をして、どちらにするか
決めたいと思います。

勉強になりました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板