web-dev-qa-db-ja.com

XMLファイルからBOM文字を削除する方法

Xslを使用してxmlファイルの出力を制御していますが、BOM文字が追加されています。

67
raluxgaza
# vim file.xml
:set nobomb
:wq
165

File BOM Detector (Windows用のフリーウェア)を使用すると、バイトオーダーマークを簡単に削除できます。

18
Anthony Faull

これをxsltファイルに追加するだけです:

<xsl:output method="text"
        encoding="ASCII"/>
2
ken

16進エディタを使用して最初の2バイトを削除するだけです。

1
Marko

XSLTを使用して文字列からBOMシンボルを削除するのは非常に簡単です。

<xsl:value-of select="translate(StringWithBOM,'','')"/>

1
dr_leevsey

私は、XMLがUnicode、一部のUnicodeエンコードで記述されることが推奨され、特定のUnicodeエンコードが初期バイトオーダーマークを含むように指定されているという印象を受けました。そのバイト順マークがないと、ファイルはUnicodeエンコードで正しくエンコードされなくなり、XMLが修正されなくなります。 XMLプロセッサは、わずかなエラー(誤ったUnicodeエンコーディングなど)ですぐに失敗するために、容赦しないことが推奨されます。どのような種類のXMLプロセッサを破壊しようとしていますか?

明らかに、UTF-8エンコードされたドキュメントからバイトオーダーマークを取り除くと、そのドキュメントはASCIIエンコード(Unicodeではない)に見え、一部のテキストプロセッサはASCIIエンコードされたドキュメント。これはあなたが使用しているものですか?

0
yfeldblum

XSLで使用する出力エンコードは何ですか?入力ドキュメントはどのエンコーディングですか?入力はどこから来て、その間に保存/アップロード/ダウンロードされたのはどこですか?

XMLおよびXSLは、他に何も指定されていない場合、UTF-8を使用するようにdefaultする必要があります。しかし、明らかに、ここで何かが間違っています。

起こる可能性のあることの1つは、XMLが、デフォルトでISO-8859-1で機能するように設定されているWebサーバーによって提供されていることです。

少し話題から外れていますが、 Joelの非常に有益な記事 テキストエンコーディングについては、私にとって目を見張るものでした。プログラミングについて非常に賢い人が大勢いますが、「プレーンテキスト」や「ASCII」または「ANSI」と呼ばれるようなものがあると考え続けています。まだ理解していない場合は、実際に把握する必要がある問題です。

0
AmbroseChapel