以下の内容はhttps://kazzz.hatenablog.com/entry/20070824/p2より取得しました。


UTF8でXMLを出力する際に必ずBOM無しにする

.NETクライアントからXMLをサーバ上のTomcatに送信するためには、Javaと互換性を保つためUTF8で出力する場合はいつもBOM無しにしなくちゃならない。

例えば、引数にストリームと対象のエンコーディングを指定することでXMLをストリームに書き出すメソッドがあったとすると

public void WriteXML(Stream stream, Encoding encoding)
{
   :
   :
    //UTF8の場合、BOM無しを使う
    XmlTextWriter wr = ( encoding is UTF8Encoding )
        ? new XmlTextWriter(new BufferedStream(stream), new UTF8Encoding(false))
        : new XmlTextWriter(new BufferedStream(stream), encoding);
   :
   :
}

とUTF8の場合は決め打ちでBOM無しのUTF8に挿げ替える必要があるわけだ。
出力はこれで良いはずだが、はて、入力はどうするんだろう。XmlReaderはエンコーディングの指定は無いんだが、内部で勝手にBOMの有無を判定しているのだろうか。

追記:

>XmlReaderはエンコーディングの指定は無いんだが、内部で勝手にBOMの有無を判定しているのだろうか。
ソースが無いのでなんともいえないが、これは恐らく'Yes'だと思う。XmlReaderの実装クラスのコンストラクタ、又は初期化処理中にストリームを先読みしてエンコーディングを検出していると思われる。




以上の内容はhttps://kazzz.hatenablog.com/entry/20070824/p2より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14