プロパティ ファイルの仕様によると、入力ストリームは ISO 8859-1 でエンコードされています。ただし、制御文字 (たとえば、ISO/IEC 6429 で指定されている) が違法であるとは具体的に述べていません。(実際には、それらのいくつか。たとえば、空白文字 HT、CR、NL は明らかに合法です。) また、仕様では、仮想的に違法な文字がどうなるかについては述べていません。
実際、プロパティ リーダーは、8 ビット入力ストリーム内の制御コードを Unicode 内の対応する制御コードにマッピングする大まかなマッピングを行います。次に、プロパティ ローダーは、特定の意味を持たないすべての制御コードを単純な古い文字として扱い、キーと値にそのまま含めます。(ここでコードを読むことができます...興味があれば。
実際、Java ISO 8859-1 デコーダーのソース コード (たとえば、こちら) を見ると、デコーダーがまったく同じ方法で 8 ビット文字をマッピングしていることがわかります。言い換えれば、制御文字はすべて有効な ISO 8859-1 文字として扱われます ... Java 解釈に従って。その解釈は、IANA が推奨する解釈でもあることがわかります。
「1992 年に、IANA は文字マップ ISO_8859-1:1987 を登録しました。これは、ISO-8859-1 の優先 MIME 名でより一般的に知られています (ISO 8859-1 の上に余分なハイフンがあることに注意してください)、ISO 8859-1 のスーパーセットです。このマップは、割り当てられていないコード値に C0 および C1 制御文字を割り当て、可能なすべての 8 ビット値を介して 256 文字を提供します。
( http://en.wikipedia.org/wiki/ISO_8859-1 2013-03-29より引用)
要するに、「インターネット」での「ISO 8859-1」という用語の使用は、ISO/IEC 8859-1:1998 規格と完全には一致しませんが、実際には、この不一致によって規格がより有用になります。
(そして、Java / IANA が間違っていると思うなら、Java が ISO 仕様を文字どおりに解釈し、デコーダーが,とマップされていない文字に変わったら、どれほど苦痛になるか想像してみてください!)'\t'
'\n'
'\r'