Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98

    Problema String replace

    Salve a tutti,
    in una stringa che si presente come segue
    Viale della Libertà , 9
    avrei bisogno di sostituire la à e lo spazio che la segue, con una a senza nessuno spazio.

    Ho provato ad utilizzare il seguente codice
    codice:
    location = location.replace("Ã ", "a");
    ma quando vado a stampare la à resta.

    Soltanto con il codice
    codice:
    location = location.replace("Ã", "a");
    riesco a rimuovere la Ã, ma così facendo il carattere di spazio resta.

    Soluzioni?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Non riesco a riprodurre il tuo problema, con questo codice:

    codice:
    public class Tiime
    {
    	public static void main (String [] a) {
    		String test = "Viale della Libertà , 9";
    		test = test.replace ("Ã ", "a");
    		System.out.println (test);
    	}
    }
    A me stampa correttamente:

    codice:
    C:\Users\Francesco\Desktop>java Tiime
    Viale della Liberta, 9
    Onestamente non saprei da cosa possa dipendere ...

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Tiime Visualizza il messaggio
    Soluzioni?
    Mah, il punto semmai è un altro: da DOVE arriva una stringa come Viale della Libertà , 9 con una à chiaramente "sballata" e inappropriata?
    Problemi di encoding/charset?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Mah, il punto semmai è un altro: da DOVE arriva una stringa come Viale della Libertà , 9 con una à chiaramente "sballata" e inappropriata?
    Problemi di encoding/charset?
    Da questo codice per la trasformazione delle coordinate in indirizzo, interrogando google maps
    codice:
         protected String readLocationFeed(String coords) throws IOException 
         {
            StringBuilder builder = new StringBuilder();
            HttpClient client = new DefaultHttpClient();
            //System.out.println("http://maps.google.com/maps/api/geocode/json?latlng=" + coords + "&sensor=false");
            HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?latlng=" + coords + "&sensor=false");
    
    
            try 
            {
                HttpResponse response = client.execute(httpGet);
                StatusLine statusLine = response.getStatusLine();
                int statusCode = statusLine.getStatusCode();
                
                if (statusCode == 200) 
                {
                    HttpEntity entity = response.getEntity();
                    InputStream content = entity.getContent();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(content));
                    String line;
                    while ((line = reader.readLine()) != null) 
                    {
                        builder.append(line);
                    }
                } 
                else 
                {
                    System.err.println("Failed to download file");
                }
            } 
            catch (ClientProtocolException e) 
            {
                e.printStackTrace();
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            return builder.toString();
        }
    
    
        /**
         * Analizza l'oggetto JSON delle API di localizzazione geografica al fine di trovare l'indirizzo completo corrispondente
         * alle coordinate passate come parametro
         * @param lat latitudine della geolocalizzazione
         * @param lon longitudine della geolocalizzazione
         * @return stringa contenente l'indirizzo corrispondente alle coordinate
         * @throws IOException
         * @author ashrith
        */
        protected String getLocation(String lat, String lon) throws IOException 
        {
            String location = null;
            String readUserFeed = readLocationFeed(lat.trim() + "," +lon.trim());
            
            try 
            {
              JSONObject strJson = (JSONObject) JSONValue.parse(readUserFeed);
              JSONArray jsonArray = (JSONArray) strJson.get("results");
              JSONObject jsonAddressComp = (JSONObject)jsonArray.get(0);
              location = jsonAddressComp.get("formatted_address").toString();
              
              //Rimuoviamo eventuali accento
              location = location.replace('à', 'a');
              location = location.replace("Ã", "a");
              location = location.replace('è', 'e');
              location = location.replace('é', 'e');
              location = location.replace('ì', 'i');
              location = location.replace('ò', 'o');
              location = location.replace('ù', 'u');
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
            //System.out.println("Location: " +location);
            return location;
        }

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Tiime Visualizza il messaggio
    codice:
                    BufferedReader reader = new BufferedReader(new InputStreamReader(content));
    Infatti ... appunto. Hai sicuramente problemi di charset. Il new InputStreamReader(content) usa il charset di "default" della piattaforma. Se sei su Windows è tipicamente il WIN-1252 mentre invece è altamente improbabile che un servizio come quello che stai usando ti dia una response in WIN-1252 !!

    Quindi DEVI considerare le questioni sui charset. O deduci il charset dalla response oppure lo "sai" tu a priori. In ogni caso devi passare il charset al InputStreamReader. Altrimenti non ne esci.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    98
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Infatti ... appunto. Hai sicuramente problemi di charset. Il new InputStreamReader(content) usa il charset di "default" della piattaforma. Se sei su Windows � tipicamente il WIN-1252 mentre invece � altamente improbabile che un servizio come quello che stai usando ti dia una response in WIN-1252 !!

    Quindi DEVI considerare le questioni sui charset. O deduci il charset dalla response oppure lo "sai" tu a priori. In ogni caso devi passare il charset al InputStreamReader. Altrimenti non ne esci.
    Ti ringrazio per l'aiuto, effettivamente settando il charset a UTF-8 sembra tutto apposto.
    Grazie ancora e buona serata.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.