Autore Topic: xml e string utf8 non valida  (Letto 624 volte)

Offline raffamaiden

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Ace
  • Sistema operativo:
    windows 7
xml e string utf8 non valida
« il: 19 Dicembre 2011, 17:08:40 CET »
0
Ho un'applicazione che parsa un file XML codificato in UTF8. Il file è valido, nel senso che ho controllato che tutte le stringhe siano stringhe UTF8 valide con un'applicazione apposita. Ho settato il formato UTF8 nell'input stream e nel parser SAX ma al momento di parsare una determinata stringa mi restituisce errore

Citazione
12-18 21:30:00.657: W/dalvikvm(527): JNI WARNING: input is not valid UTF-8: illegal start byte 0xf0
12-18 21:30:00.657: W/dalvikvm(527):              string: '??????'
12-18 21:30:00.657: W/dalvikvm(527):              in Lorg/apache/harmony/xml/ExpatAttributes;.getValueForQName (ILjava/lang/String;)Ljava/lang/String; (NewStringUTF)
12-18 21:30:00.657: I/dalvikvm(527): "main" prio=5 tid=1 NATIVE
12-18 21:30:00.657: I/dalvikvm(527):   | group="main" sCount=0 dsCount=0 obj=0x4001b5c8 self=0x125d8
12-18 21:30:00.657: I/dalvikvm(527):   | sysTid=527 nice=0 sched=0/0 cgrp=default handle=-1342913432
12-18 21:30:00.667: I/dalvikvm(527):   | schedstat=( 39865598187 4483146608 1174 ) utm=3930 stm=56 core=0
12-18 21:30:00.667: I/dalvikvm(527):   at org.apache.harmony.xml.ExpatAttributes.getValueForQName(Native Method)
12-18 21:30:00.667: I/dalvikvm(527):   at org.apache.harmony.xml.ExpatAttributes.getValue(ExpatAttributes.java:138)

Possibile che il parser SAX di Android non supporti completamente la codifica UTF8? Dove posso trovare maggiori informazioni in merito?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:xml e string utf8 non valida
« Risposta #1 il: 19 Dicembre 2011, 17:28:28 CET »
0
Per pura fortuna ho trovato il codice di Android che genera tale errore.

http://code.google.com/p/android/issues/attachmentText?id=6187&aid=2415125433415835591&name=wifi_special_char_fix.diff&token=2dc35c6da8a33d26164d17bfd3553464

Alla riga 38 dice:
Citazione
+                 * Bit pattern 10xx or 1111, which are illegal start bytes.
+                 * Note: 1111 is valid for normal UTF-8, but not the
+                 * modified UTF-8 used here.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline raffamaiden

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Ace
  • Sistema operativo:
    windows 7
Re:xml e string utf8 non valida
« Risposta #2 il: 19 Dicembre 2011, 17:37:01 CET »
0
Ma il mio errore è generato nella funzione getValueForQName(), quindi non penso che centri quel codice. Tra l'altro anche il log è sbagliato. In ogni caso io uso "normale" UTF8, quindi se è valido (come tra l'altro ho controllato su wikipedia) non vedo perchè non me lo parsa

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:xml e string utf8 non valida
« Risposta #3 il: 19 Dicembre 2011, 18:00:10 CET »
0
La struttura XML è valida ma in un campo hai usato un carattere codificato non in UTF-8. Un carattere UTF-8 non può iniziare con 0xF0 come segnalato nell'errore "illegal start byte 0xf0". Molto probabilmente hai usato dei caratteri codificati in "ISO-8859-1" o "Windows-1250" o altro. Per correggerlo puoi usare qualche text editor con supporto per più codifiche con conversione o qualche utility di conversione tra codifiche di caratteri.
adb logcat | tee /tmp/logcat | grep TAG