2013-06-10 38 views

答えて

6

私が言うことができる限り、U+001AはUnicodeのレガシー文字です。その存在の唯一の理由は、substitute character( "無効または間違っていると認識された文字の代わりに使用されるか、または特定のデバイスで表現できない文字の代わりに使用されます。")としてASCIIに既に定義されています。また、文字ストリームを終了するために使用されることもありました(おそらく問題の一般的な原因です)。

この機能は、U+FFFD REPLACEMENT CHARACTERによって引き継がれています。

11

これはCtrl + Zの制御コードです。それはDOS/CPから継承したDOSから継承された、Windowsで特別なものです。その古くからの使用は、Ctrl + DがUnixでどのように使われているかのように、テキストの終わりのマーカーとして使用されていました。

エラーメッセージでそれを見るか、失敗したエンコーディング変換のフォールバック文字として使用するのは非常に珍しいです。コードを再確認し、U + 003FまたはU + FFFDでないことを確認してください。これは一般的なエンコーディングの代替文字です。またはあなたが扱っている特定のコードの単純な奇妙なものです。

20

U + 001Aは、SUBSTITUTEという名前の制御文字としてUnicode Standardで定義されており、標準のchapter 16で次のような特徴を持つグループに属しています。 "Unicode標準には65個のコードポイントがありますC0 およびISO/IEC 2022フレームワークで定義されているC1制御コードとの互換性[...] Unicode Standardは、これらのコードポイントの完全な交換を提供し、 セマンティクスに加えたり、制御コードのセマンティクスは、一般に、それらが使用されるアプリケーションによって決定される。しかし、 特定のアプリケーション用途の非存在下では、それらはISO/IECで6429指定された制御機能の意味に従って解釈することができる:。1992」ISO 6429

を効果的に有するように、このコードを言及ECMA 48、と等価です短い名前のSUBも定義し、次のように定義します。 "SUBは、無効または間違っている文字の代わりに使用されます。 SUBは 自動手段で導入されることを意図しています。 "これはdefinition of this control code in Asciiを反映しています。

したがって、一般に、U + 001Aは、文字エンコーディングの解釈が適用されていないと思われる文字データのバイトなどの文字レベルのデータエラーを示すために使用できます。むしろ、「悪い文字データ」を意味するが、より適切には、「データを文字として解釈しようとすると、不正な形式のデータ」を意味する。ただし、ユニコードでは、U + FFFD置換文字が特定のUnicodeセマンティクスを持つため、より適切です。

質問に「xml」というタグが付いているので、XML 1.0では、U + 001Aは禁止されています(2.2 Characters)。注釈「サロゲートブロック、FFFE、およびFFFFを除くすべてのUnicode文字」は誤解を招きます(コメントは非規範です)。 U + 001AはUnicode文字ですが、グラフィック文字ではなく、その効果はUnicode標準では定義されていません。

+0

libxmlが有効なutf8文字を拒否している理由を考えてみてください。どうして私はそれらを手に入れているのか分かりませんが、少なくとも今私は問題の内容を理解することができます... – mcfedr

関連する問題