U+001A 文字は、文字エンコーディングに関連するエラー メッセージに頻繁に表示されます。U+001Aのキャラクターとは?
3 に答える
U+001A は Unicode 標準で SUBSTITUTE という名前の制御文字として定義されており、標準の第 16 章で次のように特徴付けられるグループに属しています。 ISO/IEC 2022 フレームワークで定義された C0 および C1 制御コード [...] Unicode 標準は、これらのコード ポイントの完全な交換を提供し、セマンティクスに追加も削除も行いません。制御コードのセマンティクスは、一般に、それらが使用されるアプリケーションによって決定されます。ただし、特定のアプリケーション用途がない場合は、ISO/IEC 6429:1992 で指定されている制御機能のセマンティクスに従って解釈される場合があります。」</p>
ISO 6429 は実質的にECMA 48と同等であり、このコードには SUB という短縮名もあると言及されており、次のように定義されています。SUBは自動的に導入されることを意図しています。」これは、 Ascii でのこの制御コードの定義を反映しています。
したがって、一般に、U+001A は、適用されている文字エンコーディングで解釈されない、意図された文字データ内のバイトの存在など、文字レベルのデータ エラーを示すために使用される場合があります。大まかに言えば、「悪い文字データ」を意味しますが、より適切には「データを文字として解釈しようとしたときに不正な形式のデータ」を意味します。ただし、Unicode では、固有の Unicode セマンティクスがあるため、U+FFFD REPLACEMENT CHARACTER の方が適切です。
質問には「xml」のタグが付けられているため、XML 1.0 では U+001A が2.2 の文字で禁止されていることに注意する必要があります。「サロゲート ブロック、FFFE、および FFFF を除く任意の Unicode 文字」というコメントは誤解を招くことに注意してください (ただし、コメントは規範的ではありません)。U+001A は Unicode 文字ですが、グラフィック文字ではなく、その効果は Unicode 標準で定義されていません。
それが Ctrl+Z 制御コードです。CP/M から継承した DOS から継承した Windows ではちょっと特殊です。Unix で Ctrl+D が使用されるのと同様に、従来はテキストの終わりのマーカーとして使用されていました。
ただし、エラー メッセージに表示されたり、失敗したエンコーディング変換のフォールバック文字として使用されたりすることは非常にまれです。コードを再確認し、より一般的なエンコードのフォールバック文字である U+003F または U+FFFD でないことを確認します。または、扱っている特定のコードの単なる癖です。
私が知る限り、U+001Aは Unicode のレガシー文字です。存在する唯一の理由は、ASCIIで代替文字として既に定義されていることです(「... 無効またはエラーであると認識された文字、または特定のデバイスで表現できない文字の代わりに使用されます。」) . また、文字ストリームを終了するために使用されることもありました (これはおそらく問題の一般的な原因です)。
Unicode では、その機能はU+FFFD REPLACEMENT CHARACTERによって引き継がれます。