Newsgroup: it.comp.www.php
Titolo: per esperti... strano tipo di codifica

Ciao ragazzi, vorrei sottopore ai più esperti in materia di codifica 
caratteri un quesito relativo a uno strano fenomeno che ho notato sul 
mio sito.
Sul sito c'è uno spazio commenti da me realizzato con dati passati alla 
pagina di destinazione via ajax.
Da quel che ho letto ajax va a fatti suoi con le codifiche in queste 
situazioni, per evitare casini ho fatto in modo che una volta digitato 
il commento, la pagina che lo riceve via POST anche per evitare 
l'inserimento di codice malevolo dagli utenti, lo converte con:
$comm=htmlentities($comm, ENT_QUOTES);
nel frattempo la pagina dove era stato digitato fa refresh e lo 
visualizza subito con:
$commcont['commento']=html_entity_decode($commcont['commento'],ENT_QUOTES);
print $commcont;
che succede?
Tutto fila liscio, apici, accenti e compagnia bella vengono visualizzati 
come sono stati digitati... quindi se io scrivo nel commento ad es. 
'viva l'italia' mi ricompare esattamente la scritta 'viva l'italia'.
Vengo al problema...
Inserisco un nuovo commento, anzichè digitare manualmente 'viva 
l'italia' lo trovo scritto in una pagina web e ci faccio copia incolla 
nel campo del form. Lo invio quindi e quando mi riappare la scritta noto 
che esce cosi':
%u201Cviva l%u2019iitalia%u201D
nel database viene inserito tutto così, ho provato anche a convertire 
prima e deconvertire successivamente (html_entity_decode) il commento con
$comm=htmlentities($comm, ENT_QUOTES,'ISO8859-1');
o
$comm=htmlentities($comm, ENT_QUOTES,'UTF-8');
ma niente va di testa sua!
Eppure il Charset definito della pagina è ISO8859-1...
Che ne pensate??? Che codifica è quella con %u201C???
Una volta un utente su questo ng mi disse che in alcuni casi di 
copia-incolla si trasmettono caratteri o informazioni non visibili ai 
nostri occhi (es. testi copiati da Word di Microsoft), è uno di questi 
casi secondo voi?
Ma se un lettore in un commento mi fa copia incolla di una citazione o 
di un testo da un'altra pagina web come faccio a rimediare???
Grazie infinite... davvero grazie per ogni dritta

 testi copiati da Word di Microsoft), è uno di questi casi secondo voi?
Si`, direi che e` questo il caso.
In particolare il primo e` l'apice aperto, il secondo l'apostrofo e il 
terzo l'apice chiuso. In ambito tipografico sono tre cose distinte, 
quindi Unicode le gestisce con 3 caratteri diversi.
Bye.

 quindi Unicode le gestisce con 3 caratteri diversi.
con mb_detect_encoding mi ha riconosciuto il copia-incolla come UTF-8, 
quando provo a riconvertire espressamente da UTF-8 con per esempio:
$comm=mb_convert_encoding($comm, "ISO-8859-1", "UTF-8");
lo ignora! Ciò restano i soliti caratteri strani...
Anche con $comm=utf8_decode($comm);  viene tutto ignorato, perchè 
secondo te?
A questo punto credo che l'unica scelta sia fare un preg_replace di ogni 
carattere utf... no?
Qualche altro utente del ng ha avuto in passato lo stesso problema?
Grazie ancora. :-)

forse ho trovato la soluzione su 
php.net
 (almeno l'unica che mi funge), 
la posto magari torna utile a qualche altro utente col mio stesso 
problema...
$comm=preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($comm));
$comm=html_entity_decode($comm,ENT_QUOTES);
un saluto a tutti. ;-)