Question

Nous venons est tombé sur une question intéressante que nous faisons face lors de tests unitaires du flux de réponse d'une transformation de message. Le résultat de ce flux est un (XML NON XML) Sortie binaire qui est mis sur la file d'attente. La question que nous sommes confrontés est le suivant: La longueur de ce message de sortie binaire ne correspond pas à celle des données non-XML, que nous sauvons notre résultat attendu de l'outil de testeur de format MFL. Notre conclusion est que l'OSB applique un codage interne à ce message qui, par les regards de celui-ci est UTF-8 présent dans Proxy / services aux entreprises. Nous avons donc changé le codage du prévu UTF-8 et le cas de test a réussi. Mais sur une enquête près, il a été constaté que UTF-8 par sa propre vertu ne représente pas toutes les données correctement. Partout où il y a une perte de données, il est représenté avec un « ? ' symbole. D'où notre comparaison est erronée, même si le cas de test JUnit passe.

Et aussi il y a MQ entre ce qui pourrait avoir son propre codage, que nous ne pouvons pas exclure à ce moment.

On peut penser à deux solutions à ceci: 1. Nous pouvons mettre en œuvre la comparaison en convertissant à la fois l'attendu et obtenu en un octet [] pour éviter tout problème d'encodage. Mais nous ne pouvons pas obtenir la longueur du message exact dans la sortie. 2. Nous pouvons coder à la fois du résultat attendu et obtenu en un format de codage commun autre que UTF-8, mais nous ne sommes pas sûr, puis faire la comparaison.

Tout gang idées?

Était-ce utile?

La solution

Vous risquez de ne rencontrez la perte de données lorsque vous regardez les données binaires codées UTF-8 et un point d'interrogation (?). Les chances sont beaucoup mieux que vous avez un jeu de polices incomplètes installé sur votre ordinateur et il n'y a pas de caractère pour afficher le caractère unicode particulier spécifié dans le fichier. Il y a une petite chance que votre binaire à la routine de conversion UTF-8 utilise un caractère qui manque un glyphe.

Si les binaires ne correspondent pas, vous auriez dû y résolu le problème. Les chances sont que l'un des binaires code pour une séquence de fin de chaîne, à la fin de la séquence de fichier, une extrémité de la séquence de transmission, ou d'un ensemble de bits qui confond un programme en pensant qu'il est fait lorsque toutes les données sont réellement présentes).

Soit ça, soit vous jettes correctement un fichier binaire en une séquence de chaîne. comparaisons binaires devraient être prises au niveau de l'octet, et en Java vous ne pouvez pas assumer les caractères d'octets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top