XML、CDATA セクションでも null char が許可されないのはなぜですか?
その場でファイルを終了するようです。
解決策はありますか?Base64?
これは有効な XML 文字ではないため、解析エラーが発生するはずです。これは、歴史的な理由 (null で終了する文字列) と、XML のプレーンテキストの性質による可能性があります。
この前の質問で答えが見つかるかもしれません:
'ファイルを終了する'べきではありませんが、整形式エラーを生成するはずです。世界の多くがまだnullで終了する文字列処理を使用しているため、これは許可されていません。したがって、\ 0を許可すると、処理チェーンの不特定のポイントで問題が発生する可能性があります。
これは、セキュリティの脆弱性でさえある可能性があります。過去には、\0を許可するシステムとそれをターミネーターとして使用するシステムのインターフェースに依存する多くのエクスプロイトがありました。したがって、最も安全な方法は、単にそれを禁止することです。
他の制御文字は&#...;としてエスケープできます。XML 1.1の他の場所での文字参照。ただし、CDATAセクションでは参照されません。XML 1.0では、制御文字を取り込む方法はまったくありません。結局のところ、これはテキストベースの人間が読める形式であると想定されています。
Base64?
はい。ただし、ほとんどの場合、バイナリの大きなチャンクを処理している場合は、XMLでカプセル化することはおそらく合理的な選択ではありません。