|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2236
|
[ajax-php-ajax] problema caratteri accentati
ciao raga ho una pagina html con il seguente charset
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> i caratteri accentati presenti nella pagina vengono visualizzati correttamente ..se però faccio una richiesta ajax x modificare una parte della pagina html i caratteri accentati non vengono visualizzati correttamente nella richiesta ajax uso la funzione encodeURIComponent e decodeURIComponent per inviare e ricevere i dati il file php che riceve i dati inviati da ajax è così fatto: Codice:
<?php // utf8_decode/utf8_encode mi permettono di gestire correttamente i caratteri accentati $html = utf8_decode($_POST['cont']); // eventuali altre operazioni echo utf8_encode($html); ?> |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Tu per mandare in output la risposta usi utf8_encode ma questa funzione prende in input un testo ISO-8859-1 e lo converte in UTF-8. Quindi non è giusto! Poi dovresti specificare meglio cosa fai in quelle "eventuali altre operazioni". Se fare le conversioni da ISO-8859-1 a UTF-8 e viceversa o meno ... dipende appunto da cosa devi fare di preciso.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Prova a fare un bell'
Codice:
header("Content-type: text/html; charset=ISO-8859-1");
|
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2236
|
Quote:
@andbin come da te riportato in "eventuali altre operazioni" per il momento rimane solamente un commento la varibile del file php $html = $_POST['cont']; contiene testo inserito in una textarea come hai visto nello script ho usato la funzione $html = utf8_decode($_POST['cont']); che se non sbaglio dovrebbe restituirmi i caratteri nella codifica ISO-8859-1 e questo dovrebbe servirmi nell'eventualità la stringa dovesse essere ulteriormente manipolata per poi alla fine restituirla nuovamente nel formato utf-8 con echo utf8_encode($html); documentandomi una possibilità potrebbe essere quella di convertire i caratteri accentati con htmlentities($stringa), ma non mi sembra la soluzione + seria Quote:
sinceramente non ho ancora le idee chiare.... ciao e grazie |
||
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Anche qui ... non devi inviarla come UTF-8 ma come ISO-8859-1.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Alt, sono andato a vedere cosa fa encodeURIComponent (che in effetti non mi ricordavo cosa fa esattamente). Data ad esempio una stringa "à", la converte in "%EF%BF%BD". Ed effettivamente è in UTF-8.
Quindi è corretto usare da php utf8_decode per ottenere nuovamente la stringa in ISO-8859-1. Però la risposta che ricevi lato Javascript non devi per forza di cose passarla a decodeURIComponent!! Cioè basta che dal PHP mandi in output direttamente del testo in ISO-8859-1. Credo eh ... dovrei provare ma non ho tempo adesso.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2236
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
No ancora alt: perché "à" la converte in "%EF%BF%BD"????
Guarda ... stasera a casa, più tranquillo, vedo di capirci qualcosa.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ehm ... avevo fatto casino io, encodeURIComponent lo stavo usando in una pagina che dichiarava il charset UTF-8 ma le stringhe le stavo scrivendo secondo il charset ISO-8859-1.
Allora suggerirei questo: i dati del POST (valori o anche i nomi, dipende) li converti con encodeURIComponent. Poi dal lato PHP bisogna vedere cosa ci devi fare. Se, per dirne una, dovessi fare una query su un database che usa la codifica UTF-8, allora ti servono in UTF-8 e non riconvertiti in ISO-8859-1. Altrimenti li riconverti con utf8_decode. La risposta lato client la dovrai avere ISO-8859-1.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 2236
|
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jan 2005
Città: London, United Kingdom
Messaggi: 959
|
Quote:
__________________
zattix |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Non basta usare à è eccetera?
__________________
|Java Base| |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:46.












|








