Domanda

Abbiamo appena imbattuto in una questione interessante, che ci troviamo ad affrontare durante il test di unità del flusso di risposta di una trasformazione messaggio. Il risultato di questo flusso è un (XML NON XML) Uscita binaria che viene messa in coda. Il problema che stiamo affrontando è: La lunghezza di questo messaggio in uscita binaria non corrisponde con quello dei dati non XML, che abbiamo salvare come il nostro risultato atteso dallo strumento formato di tester MFL. La nostra deduzione è che OSB applica internamente qualche codifica a questo messaggio che per gli sguardi di esso è UTF-8 presente nel proxy del servizio / business. Così abbiamo cambiato la codifica del previsto a UTF-8 e il banco di prova ha avuto successo. Ma su una stretta dell'inchiesta è emerso che UTF-8 dalla propria virtù non rappresenta correttamente tutti i dati. Dove mai v'è una perdita di dati è rappresentato con un ‘? ‘Simbolo. Da qui il nostro confronto non è corretto, anche se il caso di test JUnit passa.

E c'è anche MQ tra che potrebbe avere una propria codifica, che siamo in grado di escludere in questo momento.

Si può pensare di due soluzioni a questo: 1. Possiamo attuare il confronto convertendo sia l'atteso e ottenuto in un Byte [] per evitare eventuali problemi di codifica. Ma siamo in grado di ottenere l'esatto lunghezza del messaggio in uscita. 2. possiamo codificare sia previsto e risultato ottenuto in un formato di codifica comune diversa UTF-8, ma non siamo sicuri che, e poi fare il confronto.

Tutte le idee banda?

È stato utile?

Soluzione

Non si é probabile che verifica la perdita di dati quando si guardano le UTF-8 i dati binari codificati e vedere un punto interrogativo (?). Le probabilità sono molto meglio che si dispone di un set di font incompleta installato sul computer e non v'è alcun carattere per visualizzare il particolare carattere Unicode specificato nel file. V'è una minore probabilità che il vostro binario in UTF-8 routine di conversione utilizza un carattere che manca di un glifo.

Se i binari non corrisponde, si dovrebbe avere risolto il problema. Le probabilità sono che uno dei binari codifica un fine della sequenza di archi, fine della sequenza di file, la fine della sequenza di trasmissione, o un insieme di bit che confonde un programma a pensare che ha fatto quando è effettivamente presente più dati).

Uno che o si sta in modo non corretto lanciare un binario in una sequenza di stringa. confronti binari devono essere effettuate a livello di byte, e in Java non si può assumere byte == caratteri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top