05
nov
09

Web e problemi con le lettere accentate

Solitamente quando creiamo pagine web con form per l’inserimento di alcuni dati da parte dell’utente, ci troviamo di fronte al problema dei caratteri “speciali”, come le lettere accentate.
Capita spesso che il risultato che vediamo all’interno del nostro browser, sia differente da quello che ci aspettiamo.
Per esempio il carattere “à” (à) potrebbe essere rappresentato sullo schermo come “Ô (Ã). Questo e’ dovuto da un’errata codifica dei caratteri che puo’ avvenire a piu’ livelli.
Il percorso che fa il nostro dato contenente la lettera accentata generalmente e’ il seguente:

1) Inserimento del dato all’interno di un campo di testo (text e textArea) e invio attraverso la request HTTP;
2) Cattura del dato da parte del server (Tomcat) e successiva memorizzazione in una variabile;
3) Scrittura del dato all’interno del database;
4) Presentazione del dato nel browser.

In ognuno di questi quattro passaggi il carattere puo’ venir modificato, se non utilizziamo la giusta codifica dei caratteri.

Quindi per i punti 1) e 4) dobbiamo essere sicuri che il nostro browser utilizzi la codifica dei caratteri giusta. A seconda del browser l’opzione da modificare sara’ in posti diversi.
Per esempio in Firefox su Linux si trova in:

Preferenze di Firefox –> Contenuti –> Caratteri e colori –> Avanzate –> Codifica carattere predefinita.

Per il punto 2) dobbiamo andare a modificare il file server.xml di Tomcat, cercare il Connector che stiamo utilizzando ed aggiungere un parametro URIEncoding che permette al server di recuperare dalla request i caratteri con la codifica corretta.

<Connector port=”8084″ protocol=”HTTP/1.1″
URIEncoding=”UTF-8″
connectionTimeout=”20000″
redirectPort=”8443″
/>

Io qui utilizzo UTF-8, ma voi userete la codifica giusta a seconda del paese in cui vi trovate e del sistema operativo utilizzato.
Se non aggiungete questo parametro rischiate che, indipendentemente dal tipo di metodo che usate per l’invio della richiesta (GET o POST), non appena catturate il dato e lo salvate in una variabile, questo sara’ gia’ stato modificato. Mi spiego meglio. Ho un form di inserimento con un solo campo che si chiama “descrizione” e uso il metodo get per inviarlo.
Nel campo descrizione inserisco : “Problemi con qualche attività” e poi invio.
L’URL che mi si presenta nel browser sara': http://www.miosito.it/pagina.jsp?descrizione=Problemi+con+qualche+attività – che finora e’ corretto.
Nel momento in cui con Java recupero il valore del parametro con

String descrizione = request.getParameter(“descrizione”);

e con un successivo

System.out.println(“La descrizione è : ” + descrizione);

il risultato che ci si presenta e’ il seguente:

La descrizione è : Problemi con qualche attivitÃ.

Se notate ho inserito una lettera accentata “è” nel codice e il valore di descrizione. Quello che ho inserito io tra i doppi apici si legge correttamente, mentre il valore recuperato dalla request e’ sbagliato.

Per il punto 3) dobbiamo controllare che a livello di database, tabella e ogni singolo campo la codifica sia impostata correttamente. In PHPMyAdmin (molto utile interfaccia web per gestire i vostri DB – se non lo conoscete provatelo!! Sito di phpmyadmin) abbiamo la possibilita’ di scegliere la “collazione” (Collation), e quindi impostarla come preferiamo.
Solitamente la collazione e’ impostata su “latin1_swedish_ci” che comprende anche le lettere italiane, quindi le accentate e solitamente non serve cambiarlo. Se preferite potere impostare “UTF-8_bin” per rendere il DB compatibile al 100% con Tomcat. Questo perche’ nel caso in cui vogliamo salvare caratteri per esempio giapponesi con latin1_swedish_ci non li vedremo e saranno sostituiti con dei punti di domanda.

Altro su UTF-8

About these ads

12 Responses to “Web e problemi con le lettere accentate”


  1. 30 ottobre 2012 alle 2:06

    Your writing voice is innovative, I really like it.

  2. 7 novembre 2012 alle 7:26

    I have observed that of all forms of insurance, medical care insurance is the
    most marked by controversy because of the discord between the insurance policy company’s duty to remain profitable and the client’s need to have insurance policies.
    Insurance companies’ income on health and fitness plans are incredibly low, as a result some corporations struggle to profit. Thanks for the suggestions you write about through this site.

  3. 8 novembre 2012 alle 1:17

    I can’t get over how cool your writing technique is, you will have to blog more.

  4. 6 dicembre 2012 alle 12:38

    I’m so relieved to find out that there is actually a little terrific content left out there. I’m sick of google giving me junk.

  5. 30 dicembre 2012 alle 3:57

    Hey I am so excited I found your site, I really found you by mistake, while I was looking on Bing for something
    else, Regardless I am here now and would just like to say thanks for a fantastic post and a all round thrilling blog (I
    also love the theme/design), I don’t have time to browse it all at the minute but I have book-marked it and also included your RSS feeds, so when I have time I will be back to read much more, Please do keep up the fantastic job.

  6. 19 gennaio 2013 alle 5:35

    Thanks for your posting. What I want to say is that when you are
    evaluating a good on the web electronics retail outlet,
    look for a internet site with complete information on critical factors such as the level
    of privacy statement, basic safety details, any payment procedures, and various terms plus policies.
    Continually take time to see the help along with FAQ segments
    to get a greater idea of what sort of shop operates, what they are capable of doing for you,
    and ways in which you can make best use of the
    features.

  7. 1 febbraio 2013 alle 18:59

    Greetings from Idaho! I’m bored at work so I decided to browse your site on my iphone during lunch break. I enjoy the knowledge you provide here and can’t wait to take a look when
    I get home. I’m surprised at how fast your blog loaded on my mobile .. I’m
    not even using WIFI, just 3G .. Anyhow, wonderful blog!

  8. 3 febbraio 2013 alle 18:14

    If you would like to increase your familiarity simply keep visiting
    this web page and be updated with the most recent news posted
    here.

  9. 2 marzo 2013 alle 6:59

    Hi Dear, are you genuinely visiting this web page regularly, if so after that you
    will without doubt take pleasant experience.

  10. 9 aprile 2013 alle 20:42

    Coraz większa wielkość osób posiada teraz dopuszczenie
    do Internetu, i zarazem decyduje się na dokonywanie w Internecie zakupów.
    W sieci można dokonywać wysoko lepszym wyborów zakupowych.
    Jednocześnie sprawunki można dopełniać wysoce szybciej i taniej.

    W ów sposób projektowanie strony internetowej mnogość firm decyduje się na tworzenie okolica internetowej
    w celu prowadzenia sprzedaży w poprzek Internet.

  11. 11 maggio 2013 alle 0:04

    I believe everything posted was actually very logical. However, think on this, what if you were
    to create a killer post title? I am not saying your content
    isn’t solid, however what if you added a title to maybe grab a person’s attention?
    I mean Web e problemi con le lettere accentate | Appunti di Informatica is a little plain.
    You could look at Yahoo’s front page and see how they create article headlines to grab people to click. You might try adding a video or a related pic or two to get readers excited about everything’ve written.
    In my opinion, it could make your posts a little livelier.

  12. 28 giugno 2013 alle 1:01

    Hello, after reading this remarkable piece of
    writing i am too glad to share my familiarity
    here with colleagues.


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...


Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

%d blogger cliccano Mi Piace per questo: