Qu'est-ce que le caractère Unicode U+001A? Aka 0x1A

le caractère U+001A apparaît fréquemment dans les messages d'erreur relatifs au codage des caractères. Qu'est-ce que le caractère U+001A?

22
demandé sur KevSheedy 2013-06-10 16:57:46

3 réponses

U+001A est défini dans la norme Unicode comme un caractère de contrôle avec le nom de remplacement, et il appartient à un groupe caractérisé comme suit, en chapitre 16

ISO 6429 est effectivement équivalent à ECMA 48, qui mentionne ce code comme ayant le nom court SUB, aussi, et le définit comme suit: "SUB est utilisé à la place d'un caractère qui a été jugé invalide ou dans l'erreur. SOUS est prévu pour être introduit par des moyens automatiques."Cela reflète l' définition de ce code de contrôle en Ascii.

ainsi, en général, U+001A peut être utilisé pour indiquer une erreur de données au niveau des caractères, telle que la présence d'octets, dans des données à caractère supposé, qui n'ont pas d'interprétation dans le codage de caractères appliqué. Vaguement parlant, cela signifierait donc "de mauvaises données de caractère", mais de façon plus appropriée "des données malformées, en essayant d'interpréter des données comme des personnages". Cependant, en Unicode, le caractère de remplacement U+FFFD est plus approprié, car il a une sémantique Unicode spécifique.

puisque la question a été marquée avec "xml", il faut noter que dans XML 1.0, U+001A est interdit, par clause 2.2 Caractères. Notez que le commentaire "tout caractère Unicode, à l'exclusion des blocs de substitution, FFFE et FFFF" est trompeur( mais les commentaires ne sont pas normatifs); U+001A est un caractère Unicode, bien qu'il ne s'agisse pas d'un graphique le caractère et son effet ne sont pas définis dans la norme Unicode.

20
répondu Jukka K. Korpela 2013-06-10 17:24:08

C'est le code de contrôle Ctrl+Z. C'est un peu spécial dans Windows, qui l'a hérité de DOS qui l'a hérité de CP/M. son utilisation traditionnelle était comme marqueur de fin de texte, similaire à la façon dont Ctrl+D est utilisé dans Unix.

le voir dans un message d'erreur ou utilisé comme caractère de repli pour une conversion de codage ratée est cependant assez inhabituel. Je vérifierais le code et m'assurerais que ce n'est pas U+003F ou U+FFFD, les caractères de repli les plus typiques. Ou juste une simple bizarrerie le code spécifique auquel vous avez affaire.

13
répondu Hans Passant 2013-06-10 13:33:40

autant que je puisse dire U+001A est un caractère d'héritage en Unicode. Sa seule raison d'être est qu'elle était déjà définie dans ASCIIcaractère de substitution ("... utilisé à la place d'un personnage qui est reconnu invalide ou en erreur ou qui ne peut être représenté sur un périphérique donné."). Il était aussi parfois utilisé pour mettre fin à un flot de caractères (ce qui est probablement une source commune de problèmes)

en Unicode cette fonction est pris en charge par l' U+FFFD CARACTÈRE DE REMPLACEMENT.

7
répondu Joachim Sauer 2013-06-10 13:24:30