Frage

Wir sind gerade auf eine interessante Frage, die wir während der Unit-Tests des Antwortfluß einer Nachricht Transformation konfrontiert. Das Ergebnis dieser Strömung ein (XML zu NON XML) Binärausgang, der auf die Warteschlange gestellt wird. Das Problem, das wir stehen, ist: Die Länge dieser Binärausgang Nachricht nicht mit der den Nicht-XML-Daten übereinstimmen, die wir als unser erwarteten Ergebnis aus dem MFL-Format Testern Tool speichern. Unsere Schlussfolgerung ist, dass OSB intern eine Codierung auf diese Nachricht gilt, die von den Blicken von ihm UTF-8 in Proxy / Business Service ist. So haben wir die Codierung des erwarteten nach UTF-8 und der Testfall erfolgreich war. Aber auf eine enge Untersuchung wurde festgestellt, dass UTF-8 durch seine eigene Tugend repräsentiert nicht alle Daten korrekt. Wo immer es wird ein Datenverlust ist mit einem ‚dargestellt? ‚Symbol. Daher unser Vergleich ist falsch, obwohl der JUnit-Testfall passiert.

Und es gibt auch MQ zwischen denen seine eigene Codierung haben könnten, die wir nicht in diesem Moment auszuschließen.

Wir denken von zwei Lösungen für diese: 1. Wir können den Vergleich implementieren, indem man sowohl die erwartete und in ein Byte erhalten [] keine Codierung Probleme zu vermeiden. Aber wir sind nicht in der Lage, die genaue Nachrichtenlänge in der Ausgabe zu erhalten. 2. Wir können beide erwartet codieren und das Ergebnis in ein gemeinsames Format codiert sind andere als UTF-8 erhalten wird, aber wir sind nicht sicher, welche, und dann den Vergleich zu tun.

Alle Ideen Bande?

War es hilfreich?

Lösung

Sie erleben wahrscheinlich keinen Datenverlust, wenn Sie an den UTF-8-codierten binären Daten und sehen, ein Fragezeichen (?). Quoten sind viel besser, dass Sie einen unvollständiger Schriftsatz auf Ihrem Computer installiert haben, und es gibt kein Zeichen die besonderen Unicode-Zeichen in der Datei angegeben angezeigt werden soll. Es ist eine kleinere Chance, dass Ihr binär auf UTF-8 Konvertierungsroutine ein Zeichen verwendet, die eine Glyphe fehlt.

Wenn die Binärdateien nicht übereinstimmen, sollten Sie das Problem dort behoben haben. Quoten sind, dass eine der Binärdateien ein Ende der Zeichenfolge-Sequenz, das Ende der Datei-Sequenz kodiert, ein Ende der Übertragungssequenz, oder ein Satz von Bits, die ein Programm in das Denken verwirrt es gemacht wird, wenn mehr Daten tatsächlich vorhanden ist).

Entweder das, oder Sie sind falsch ein binäres in einen String-Sequenz Gießen. Binary Vergleiche sollten auf Byte-Ebene gemacht werden, und in Java können Sie nicht Bytes == Zeichen annehmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top