2009-08-24 10 views
7

SO,hexadécimale 0x19 est un caractère non valide

Je construis chaîne XML basée sur les valeurs de l'ensemble de données à l'aide XMLWriter.

Il construit correctement la chaîne xml selon les paramètres et les conditions que j'ai spécifiés.

S'il y a plus de 1000 enregistrements dans l'ensemble de données et que j'essaie de générer la chaîne xml, j'obtiens l'erreur ci-dessus. hexadécimal 0X19 est un caractère non valide

Comment puis-je passer cela. J'ai passé environ 6 heures à essayer de comprendre.

S'il vous plaît aider

+0

Je viens de rencontrer moi-même la même erreur. :) Le personnage en question est connu comme un personnage 'Fin de médium'. Plus d'informations peuvent être consultées ici: http://www.fileformat.info/info/unicode/char/19/index.htm. –

Répondre

-1

essai 0x19 place :)

hexadécimal (base 16) utilise 16 symboles qui sont 0 à 9 et ABCDEF (ou a à f, ce qui représente 10 à 15)

0x est juste un préfixe pour les constantes numériques dans les langages de programmation (comme C) et coquilles

+0

Merci Sylvain. Réflexions sur l'erreur que j'obtiens –

1

Hex 0x19 est un code de contrôle dans le ASCII sequence - il est Fin de moyen (EM). Je ne suis pas sûr de savoir comment cela se passe dans votre flux de données. Si vous codez quelque chose nécessitant plus d'un octet dans UTF-8 et que vous le traitez ensuite comme un jeu de caractères à octet unique ou une autre séquence de codage/décodage similaire, vous pourriez voir le deuxième octet d'une séquence UTF-8.

Transmettez-vous d'un jeu de caractères à un autre? et Quels sont les encodages d'entrée et de sortie?

+0

Vous pouvez obtenir ces valeurs si vous copiez et collez un document Microsoft Word avec des guillemets actifs activés.Notre base de données Oracle est US7ASCII, donc l'Unicode est peut-être stocké mais seuls les deux derniers caractères sont sauvegardés? Ces guillemets simples "intelligents" et "intelligents" sont stockés sous la forme hexadécimale 18, 19, 1C, 1D: http://stackoverflow.com/questions/2826191/converting-ms-word-quotes-and-apostrophes http://i.imgur.com/hVpv7NB.jpg – Sun

13

Tout simplement, vous n'êtes pas autorisé à ce caractère dans un document XML, peu importe comment vous l'annotez. Pour citer le spec:

Char :: = # x9 | #xA | #xD | [# x20- # xD7FF] | [# xE000- # xFFFD] | [# x10000- # x10FFFF]

traduit grossièrement, cela signifie qu'avant que 0x20, vous ne onglet autorisé (0x09), saut de ligne (0x0a) et retour chariot (0x0D).

La manière normale de surmonter ce genre de problème pour utiliser un autre codage intégré, comme base64.

-1

J'ai vu des erreurs similaires se produire avec des caractères non valides dans les balises XML et/ou les noms d'attributs. Par exemple, si vous ne pas inclure un espace lors de la construction manuellement le fichier XML,

<tagNameattributeName="attributeValue"> 

jetterait une erreur contre l'intention

<tagName attributeName="attributeValue"> 

Peut-être vaut le détour.

Questions connexes