Problemi di Android JSON CharSet UTF-8

Attualmente sto lavorando su un'applicazione Android, che ottiene i suoi dati da un'API che fornisce i dati JSON. Sto immagazzinando gli elementi per i dati JSON come Strings che provocano un qualche carattere dispari (ad esempio 'Â'). Ho capito che questo ha a che fare con il set di caratteri, quindi ho impostato l'InputStreamReader su "UTF-8" ma non sembra aver risolto il problema.

URL hukd = new URL(requestUrl); URLConnection tc = hukd.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(tc.getInputStream(), "UTF-8")); String line = in.readLine(); Log.d("line :", line); JSONObject obj = new JSONObject(line); JSONArray ja = obj.getJSONObject("deals").getJSONArray("items"); for (int i = 0; i < ja.length(); i++) { // each deal JSONObject jo = (JSONObject) ja.get(i); // make the deal Deal d = new Deal(jo.getString("title"), jo.getString("description"), jo.getString("price"),jo.getString("temperature"), jo.getJSONObject("merchant").getString("name"), jo.getString("deal_image"), jo.getString("deal_image_highres")); listItems.add(d); Log.d("Deal:", d.toString()); } 

La linea "Log.d" dà

  • Dialogo e suggerimenti di ricerca Android ListView: cambia tema e colors
  • Android SharedPreferences in Frammento
  • Come eseguire test di unità per i progetti della libreria Xamarin (iOS e Android)?
  • Android: "Il path per il progetto deve avere solo un segmento"
  • Passare l'image in PutExtra in Android
  • Che cos'è la "scrittura affidabile" in BLE?
  •  01-30 19:56:01.909: D/line :(610): {"deals":{"items":[{"title":"Absolute steal ** Harmony one remote in store only Comet \u00c2\u00a349.98 **","deal_link":"http:\/\/www.hotukdeals.com\/deals\/absolute-steal-harmony-one-remote-store-only-comet-49-98-1131779?aui=465","mobile_deal_link":"http:\/\/m.hotukdeals.com\/deals\/absolute-steal-harmony-one-remote-store-only-comet-49-98-1131779?aui=465","deal_image":"http:\/\/www.hotukdeals.com\/images\/threads\/1131779_1.jpg","description":"Was just in comet getting two new washing machines when I stumbled upon a load of Harmony ones on the end of an isle \u00e2\u0080\u00a6. I nearly blew a fuse when I saw they had been reduced from \u00c2\u00a380.00 to under \u00c2\u00a350 as I just bought 3 of these before xmas at \u00c2\u00a368.00 ea which I thought was a true bargain.\r\n\r\nI asked they guy and he said they were stopping doing them as far as he knew and that the deal should be nation wide this must be the cheapest I've seen for the UK version ever even though this is the Harmony one and not the one + is it still a great remote which does just about everything you could want it to. \r\n\r\n** note I don\u00e2\u0080\u0099t have a picture of the price tag but I have these at my home and are 100% that it\u00e2\u0080\u0099s the harmony one on sale hope this helps some of you guys and girls out **\r\n\r\nThe Logitech Harmony One remote control lets you replace 15 remotes with one, easy to use device. With its clear, touch screen display this Harmony learning remote control makes controlling the most complex of systems easy. A graphic interface allows you, for example, to watch a DVD at the touch of a button.\r\n","submit_time":"48 minutes ago","hot_time":"1 minute ago","poster_name":"no1son","temperature":106.88999939,"price":49.98,"timestamp":1327950390,"expired":"false","forum":{"name":"Deals","url_name":"deals"},"category":{"name":"Audiovisual","url_name":"audiovisual"},"merchant":{"name":"Comet","url_name":"comet.co.uk"},"tags":{"items":[{"name":"leeds"}]},"deal_image_highres":"http:\/\/www.hotukdeals.com\/images\/threads\/high-res\/1131779_1.jpg"},{"title":"Youth Brazil Shirt \u00c2\u00a34 at Very\/Littlewoods","deal_link":"http:\/\/www.hotukdeals.com\/deals\/youth-brazil-shirt-4-very-littlewoods-1131765?aui=465","mobile_deal_link":"http:\/\/m.hotukdeals.com\/deals\/youth-brazil-shirt-4-very-littlewoods-1131765?aui=465","deal_image":"http:\/\/www.hotukdeals.com\/images\/threads\/1131765_1.jpg","description":"2010 Brazil shirt by Nike\r\nAvailable in all youth sizes.\r\nFree delivery through collect plus","submit_time":"1 hour, 4 minutes ago","hot_time":"14 minutes ago","poster_name":"ericagradus","temperature":161.479995728,"price":4,"timestamp":1327949447,"expired":"false","forum":{"name":"Deals","url_name":"deals"},"category":{"name":"Fashion","url_name":"fashion"},"merchant":{"name":"Very","url_name":"very.co.uk"},"tags":{"items":[{"name":"brazil shirt"},{"name":"very"},{"name":"littlewoods"}]},"deal_image_highres":"http:\/\/www.hotukdeals.com\/images\/threads\/high-res\/1131765_1.jpg"},{"title":"Milk Chocolate Mikado 29p at Home Bargains","deal_link":"http:\/\/www.hotukdeals.com\/deals\/milk-chocolate-mikado-29p-home-bargains-1130742?aui=465","mobile_deal_link":"http:\/\/m.hotukdeals.com\/deals\/milk-chocolate-mikado-29p-home-bargains-1130742?aui=465","deal_image":"http:\/\/www.hotukdeals.com\/images\/threads\/1130742_1.jpg","description":"Was in Home Bargains in Lancaster and they had the MIlk Chocolate Mikado for 29p. The white and hazelnut were 59p. Didn't check the sell by day as it took all my will power to resist haha!\r\n\r\nSorry if this is a duplicate I did look for it but couldn't find it.","submit_time":"1 day, 3 hours ago","hot_time":"14 minutes ago","poster_name":"cazi77","temperature":146.61000061,"price":0.29,"timestamp":1327853963,"expired":"false","forum":{"name":"Deals","url_name":"deals"},"category":{"name":"Groceries","url_name":"groceries"},"merchant":{"name":"Home Bargains","url_name":"homebargains.co.uk"},"tags":{"items":[]},"deal_image_highres":"http:\/ 

    Qualche idea?

  • FragmentActivity Junit Testing
  • Bitmap in ImageView con angoli arrotondati
  • Errore durante l'implementazione della barra di azione della libreria di supporto
  • PACKAGE_REMOVED e poi PACKAGE_ADDED vengono sparati insieme a PACKAGE_REPLACED Intent Action
  • Android Lollipop, la visualizzazione personalizzata AppCompat ActionBar non assume la width dello schermo integer
  • Autenticazione Android con OpenID di Google. Cosa accadrà?
  • 2 Solutions collect form web for “Problemi di Android JSON CharSet UTF-8”

    Provate le seguenti che mi hanno aiutato quando avevo problemi simili

    nuova string (jo.getString ("nome"). getBytes ("ISO-8859-1", "UTF-8");

    So che questo è un paio di anni dopo, ma ho trovato una soluzione più affidabile di questa e non ha bisogno di tutte le cose più codificanti

    Questo è stato trovato per caso mentre stavo cercando qualcos'altro, ma funziona:

     "" + jo.opt("name"); 

    Ciò che fa è get il risultato come un object grezzo e metterlo alla fine di una string vuota lo obbliga a formattare string – ovviamente, se la voce non è stata originariamente una string, può dare risultati oscuri, quindi forse provare a grabcare come prima string

    Ho qualcosa di simile:

     String s = ""; try { s = jo.getString("name"); s = "" + jo.opt("name"); } catch (Exception e) { Log.e("JSON error", "error:" + e.toString()); } 

    Questo proverà la string esiste e quindi lo sostituisce con la versione completamente codificata

    Spero che questo aiuti qualcuno in futuro 🙂

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.