UTF-8 e caratteri sbagliati



Volete che il vostro sito supporti le lettere accentate e i caratteri speciali, senza che sia necessario ricorrere agli shortcut del iso-8895-1? Perfetto: basta usare la tabella dei caratteri chiamata UTF-8.

Farlo è decisamente semplice, ma è necessario porre attenzione ad un paio di cose. La prima è che bisogna impostare nei meta tag il charset, ovvero proprio la tavola di codifica dei caratteri:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Ma questo non basta. E' necessario che il server web (IIS / APACHE) e in particolare la configurazione del sito, sia impostata per erogare pagine in quel formato, indicandolo nel protocollo. Per fare questo o accedete alle impostazioni del server, oppure tramite i linguaggi server side, potete impostarlo.

Vi presento come farlo per i principali linguaggi di scripting: Coldfusion, PHP, ASP. 

 

UTF in Coldfusion

In  Coldfusion il content-type si setta con l'istruzione:

<cfprocessingdirective pageencoding="utf-8" >
<cfcontent type="text/html; charset=utf-8">

Nota bene: è fondamentale che le due iscruzioni siano in testa alla pagina, prima di ogni altra cosa. Se avete un file Application.cfm nella cartella, deve essere nella riga 1 di quel file. In aggiunta potete inserire anche:

 

<cfscript> 
SetEncoding("form","utf-8"); 
SetEncoding("url","utf-8"); 
</cfscript>

Per approfondire consiglio la lettura di How to enable unicode in Coldfusion.

 

UTF in PHP

In PHP invece si usa questa istruzione:

<?php header('Content-Type: text/html; charset=utf-8'); ?>

 

 

UTF in ASP / ASP.NET

E in ASP / ASP.NET questa:

<%Response.charset="utf-8"%>

Se ne volete sapere di più consiglio la lettura di O-HTTP-CHARSET.

Se trovi questo articolo su un blog diverso da “blog.merlinox.com” si tratta probabilmente di una copia non autorizzata. L’indirizzo originale di questo articolo è: UTF-8 e caratteri sbagliati scritto da .

14 Responses to UTF-8 e caratteri sbagliati

  1. Salve,
    sono roberto amministratore del blog

    http://linuxfreedomforlive.blogspot.com

    intanto complimenti per il blog
    sono appena diventato fans del tuo sito nella tua pagina facebook
    volevo chiederti se potevi contraccambiare
    la mia pagina la trovi

    http://www.facebook.com/pages/LinuX-Freedom-for-Live/290943601160

    ciao

  2. Francesco dice:

    La gestione delle lettere accentate e’ davvero un calvario per noi poveri sviluppatori. Pensa che forzo l’UTF-8 in tutti i modi … anche con Spring nel mio web.xml in questo modo:

    <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>

    E a volte non basta …

  3. Merlinox dice:

    Infatti @Francesco la cosa non è molto chiara. Ad esempio coldfusion nativamente pubblica in UTF-8, ma ti garantisco che in un sito le ho provate tutte, senza risultato. Alla fine ho messo il meta a iso-8859-1, in modo che dreamweaver lo riconoscesse. Quindi fatto copia e incolla di tutti i testi, in modo che DW li convertisse nella notifica standard. Vitaccia…

  4. Giovanni dice:

    L’UTF-8 va impostato prima di tutto su Apache, poi su MySQL sia nelle tabelle che nelle connessioni, poi su PHP possibilmente sul file php.ini, altrimenti in questo modo:

    ini_set(‘default_charset’, ‘utf-8′);

    L’istruzione dell’articolo infatti non imposta la codifica di PHP ma manda un header HTML, cosa che non serve se dopo nel documento abbiamo il metatag. Laddove non si ha l’accesso alle impostazioni di MySQL, si può dare questa query in PHP prima di tutte le altre:

    mysql_query(“SET NAMES ‘utf8′”);

    Ma ancora così può non bastare! Se abbiamo salvato il nostro documento con una codifica diversa, avremo di nuovo il maledetto quadratino nero con il punto interrogativo dentro, segno di un carattere UTF-8 non riconosciuto.

    Con questo ho coperto tutti i possibili casi: non ce ne sono altri.

    Quando invece al posto di una lettera accentata abbiamo DUE lettere esotiche, è il sintomo che i dati sono in UTF-8, mentre invece è stata dichiarata un’altra codifica.

  5. Merlinox dice:

    Grande @Giovanni . Però potremo anche continuare parlando del BOM dei file, ovvero dell’ordinamento dei byte nella codifica dei file. E’ un macello: http://unicode.org/faq/utf_bom.html

    Il W3C fornisce addirittura un verificatore online: http://people.w3.org/rishida/utils/bomtester/

  6. Giovanni dice:

    Nel BOM non mi sono mai addentrato, non è mai stato un problema per me.

  7. Joel dice:

    Hola,

    @Merlinox da un occhio al blog con chrome, il layout è sputtanatissimo dal fine dell’articolo al fondo :-S

    @Giovanni & @All io in PHP uso sempre utf8_decode & utf8_encode, oltre all’header html dell’articolo e le impostazioni nel DB. Purtroppo il php.ini non me lo fanno toccare nel mio hosting, -__- devo decidermi a switchare su un virtuale/dedicato…

  8. Merlinox dice:

    O porca paletta… non so cosa diavolo sia successo @joel! Mannaggia… uff… io non ho toccato nulla, sarà qualche plugin! Mi dai una mano?

  9. Joel dice:

    Prova a disabilitare i plugin uno alla volta per trovare il “colpevole”.

    In fondo al sito ho trovato questo:

    height non è chiuso
    l’apice di chiusura dell’alt è sbagliato, non è un ” ma un ”
    dopo border c’è un pelo di confusione

    Non penso sia il colpevole ma correggere un errorino non fa mai male… il codice del blog è parecchio incasinato, non trovo l’errore, ma sembra che sia nel navbar.

  10. Joel dice:

    Mi ha arato il codice, -__- riga 990 di questa pagina, quella di hiddy.

  11. Merlinox dice:

    Il buchetto era in un widget, ma non è quello il problema. Porca miseria non lo trovo :(

  12. Merlinox dice:

    Grazie infinite a @capobecchino e a @arquen di meemi per avermi aiutato nella risoluzione del problema al layout!

  13. Erriko dice:

    @ferramroberto
    E’ lo stesso commento spiccicato che ha messo sul mio blog. Mi è rimasto impresso dalla frase “sono diventato fans”. Io l’ho prontamente taggato come “spamS” XD

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>