Newsgroup: it.comp.www.php
Titolo: adesso che non ho più le entiutà mi sembra peggio

Ho codificato tutte le parole con caratteri diacritici in una tabella di 
prova
le leggo bene
vanno bene
Ma non sono ordinate
Come ordino il campo che ha una parte di caratteri codificati in utf-8 
adesso che non ho più le entiutà mi sembra peggio

Come ordino il campo che ha una parte di caratteri codificati in utf-8
Ti rimane di settare la collation:
http://www.phpwact.org/php/i18n/utf-8/mysql
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!


nella query ho:
$query="SELECT *FROM vocabolario COLLATE 'utf8_general_ci' order by ita ";
le tabelle come detto ieri sono tutte in utf-8 e in questa nella colonna 
'ita' dove ci sono accenti il contenuto del campo è codificato utf-8
ma non cambua nulla

ma non cambua nulla
Strano, perché almeno segnalarti che stai sbagliando sintassi dovrebbe
farlo.
	SELECT * FROM vocabolario ORDER BY ita COLLATE 'utf8_general_ci';
...COLLATE agisce sulla parola alla sua sinistra, ma nel tuo esempio è
il nome di una tabella, non di un campo.
Per es. (il db è utf8, con collation utf8_general_ci):
mysql> CREATE TABLE words;
mysql> CREATE TABLE words ( word varchar (128) );
mysql> INSERT INTO words VALUES ( 'Cittù' ), ( 'Città' ), ( 'Citté' ), (
'Citta' );
mysql> SELECT * FROM words ORDER BY word;
+--------+
| word   |
+--------+
| Città  |
| Citta  |
| Citté  |
| Cittù  |
+--------+
4 rows in set (0.00 sec)
mysql> SELECT * FROM words order by word COLLATE utf8_general_ci;
+--------+
| word   |
+--------+
| Città  |
| Citta  |
| Citté  |
| Cittù  |
+--------+
4 rows in set (0.00 sec)
Ma con la tua sintassi (COLLATE dopo il nome tabella):
mysql> SELECT * FROM words COLLATE utf8_general_ci order by word;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use
near 'COLLATE utf8_general_ci order by word' at line 1
======
Prova (dopo aver backuppato la tabella):
ALTER TABLE vocabolario CHANGE ita ita VARCHAR (quel che è) CHARACTER SET
utf8 COLLATE utf8_general_ci [NOT NULL];
come è indicato nella pagina che ti ho linkato.


 Leonardo
No ho proivato tutto
nella parte italiana del vocabolario ho solo pochissime parole accentate
Alla lettera P le ordina cosě:
piů
panca
piccione
questa č l'ennesima query :
SELECT * FROM `vocabolario`order by ita COLLATE utf8_general_ci
mel campo della tabella mysql la parola piů č scritta: piĂą
?
la query di modifica della voce č:
mysql_set_charset('utf8',$con);
$query_update ="update vocabolario set ita='".$ita."' WHERE id=".$id;
la query di visualizzazione č:
mysql_set_charset('utf8',$con);
$query="SELECT *FROM vocabolario order by ita COLLATE utf8_general_ci";
ho provato un sacco di volte anche con phpmyadmin e la storia č uguale

$query_update ="update vocabolario set ita='".$ita."' WHERE id=".$id;
Ummm. Quell'$ita sei sicuro che ti arrivi in UTF8?
Prova a scrivere prima del query_update:
	if ('UTF-8' == mb_detect_encoding($ita))
		$ita = utf8_encode($ita);


Scusate ma io adesso non ci capisco piů niente.....
Devo fare un passo indietro e capire meglio prima che le ferie finiscano
Per inserire i dati nuovi nel vocabolario uso un form in una pagina con
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> salvata 
su disco con codifica utf-8
?
I dati vengono raccolti dalla medesima pagina
?
I dati al momento di salvarli sono certo che sono a posto
Sia In caso di insert sia di update vengono salvati tutti i 3 campi ovvero 
italiano, dialetto e diacritico.
La tabella VOCABOLARIO č SICURAMENTE UTF-8
IL CAMPO ITALIANO USA SOLO VOCALI DI TASTIERA con i normali accenti italiani
Il campo doialetto lo stesso con in piů la o e la e con accento circonflesso 
e/o con i 2 punti sopra
Nel campo diacritico possono essere usati tutti i caratteri di cui sopra + 
consonati con tilde sopra e punto sopra o sotto r molti altri
Quest'ultimo non lo ordino mai mentre gli altri 2 si.
Domanda elementare
prima degli insert e degli update i valori dei 3 campi devo codificarli in 
qualche modo?
Se si come?Con quale funzione php?
Qual'č la query giusta per far arrivare nella tabella i dati utf-8?
Adesso i dati che abbiamo appena inserito nella tabella o modificati sono 
sicuramente utf-8?
Adesso con che query li recuoeriamo?
Un semplice select *from vocabolario order by Italiano oppure dialetto a 
seconda dei casi?
Adesso infine devo mostrarli a video uso htmlentities($riga[0],.........) 
siccome spesso sono piů parole nanche apostofate?
?
Scusate tanto ma volevo finire il lavoro e farlo bene
Grazie a tutti 

Adesso infine devo mostrarli a video uso htmlentities($riga[0],.........) 
No, li mandi pari pari, in una pagina che esca con
	Header('Content-Type: text/html; charset: utf-8');
e con i META tag di utf-8, che LO SO, LO SO, e' overkill - ma a me piace
essere eccessivo: cintura, bretelle e mutande di bandone :-D
A questo punto, se il browser dell'utente è moderno, DEVE vedere le cose
perfette.



Ok grazie mille adesso va tutto bene tranne un piccoilo particolare.
Nel campo Italiano ho pochissime paroole apostrofate ma una o sue si. mentre 
in dialetto ne ho molte
Usavo pertanto htmlentities($riga[0],.........) altrimenti mi si tronca la 
frase prima dell'apostrofo
Se però ora metto htmlentities($riga[0],.........) non viene mostrata la 
parola in chiaro ma in utf-8
Cosa devo fare? 

 Cosa devo fare?
Prova htmlspecialchars al posto di htmlentities, oppure a specificare il 
charset in htmlentities.
Bye.

parola in chiaro ma in utf-8
Non ho capito dov'e' che si tronca la frase, ma sospetto che tu stessi
usando la soluzione sbagliata al problema.
Quando hai una parola accentata e la butti nel DB, devi prima renderla
compatibile SQL con mysql_real_escape.
Quando la tiri fuori, e vuoi mandarla in HTML, non devi fare niente SE
la mandi in un testo, mentre se è in un attributo di tag, per esempio,
   <input type='text' name='traduci' value='Va' a ciapa' i ratt!' />
o in Javascript,
	alert('L'e' l'una!');
bisogna che tu la protegga con AddSlashes().
Casomai, se ti compare un HTML troncato, vai su View Page Source e fai
una copia di quel pezzo di HTML, da due righe prima, a due righe dopo;
postalo qui; e vediamo se ci si capisce qualche cosa.


 -- 
allora dopo averla tirata fuori se la metto come testo c'è tutta
mentre se è in un campo input è tronca

 Bye.
ottimo specificando il charset
Grazie a tutti
Ora mi manca solo di togliere tutte le entità presenti nel campo dialetto e 
tradsformarle in urf-8

mentre se è in un campo input è tronca
Bene, la diagnosi è confermata. Quelle nel campo input vanno protette con
AddSlashes() :-)


e adesso che tutto lavora con codifica urf-8 la cosa più bella è che il 
vocabolario riconosce comne esse e zeta anche le esse e le zeta sottopinyate 
e le o tagliate come o le n con la tilde come enne ecc.....
vedi:
http://www.iomla.net/vocabolario.htm
Fantastico
Non speravo tanto