2014-05-05 8 views
5

Nella mia rete domestica ho un servizio con il nome "Den TV" con uno spazio tra "Den" e "TV".Stringa contenente carattere speciale convertito in rappresentazione di escape su Android: come impedire questo?

Quando risolvo questo servizio utilizzando NSD Manager sul mio cellulare, ottengo il nome del servizio utilizzando NsdServiceInfo.getServiceName() e lo registro. Creo anche un oggetto che avvolge l'oggetto NsdServiceInfo e lo aggiunge a un ArrayAdapter per un controllo ListView.

Sia il messaggio di registro che la vista elenco visualizzano la stringa "Den \\ 032TV". Sembra che lo spazio sia stato sostituito con un carattere "sostitutivo" (valore 26 o ottale 032), e che la stringa sia stata quindi scappata su "Den \ 032TV" e quindi sfuggita ulteriormente a "Den \\ 032TV".

Per me questo è un comportamento davvero bizzarro. Perché NSD Manager non restituisce la stringa "così com'è". Avahi non ha problemi con questo. E anche se lo spazio viene sostituito per qualche motivo che non riesco a capire, perché viene scappato? Due volte?

Si noti inoltre che il carattere spazio ha valore 32, quindi forse non è un valore ottale, ma perché il precedente "0"?

Qualcuno può aiutarmi a capire come ottenere il valore reale?

+0

Amico, fornisci ulteriori dettagli e frammenti di codice. –

+0

Il codice è praticamente testuale come da codice di esempio sul sito Web degli sviluppatori Android. Vedi http://developer.android.com/training/connect-devices-wirelessly/nsd.html#discover. – AlastairG

risposta

3

Secondo http://www.ietf.org/rfc/rfc6763.txt.
Si noti che nslookup sfugge agli spazi come "\ 032" per scopi di visualizzazione, ma un browser grafico DNS-SD non dovrebbe. quindi "\ 032" non è un carattere di escape Java e specifico del protocollo.

+0

Ti ho dato un upvote per una buona scoperta, ma è solo una parte della risposta. Ad esempio, perché "\" torna a "\\"? Perché NSD Manager non restituisce la stringa corretta poiché dovrebbe essere considerata un browser DNS-SD grafico? Come posso ottenere il valore corretto? – AlastairG

Problemi correlati