PDA

View Full Version : [Php & MySql] Problemi con i caratteri speciali


lore_83
02-06-2008, 10:10
Ciao a tutti.
Sto creando un'applicazione web che richiede la gestione dei nomi di alcune città del mondo.
Mi trovo in difficoltà per la gestione dei character set.

1. Non riesco a visualizzare correttamente gli ideogrammi (e anche alcune lettere spagnole e chissà quante altre...) nella mia applicazione (io prelevo i nomi delle città da un file xml nel quale vedo i caratteri in ideogrammi in maniera corretta!)
Le pagine html della mia applicazione iniziano con <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

2. Se riesco a prelevare correttamente i nomi delle città (e quindi li visualizzo bene nel mio browser) quando li invio nel database che uso (MySql 5) non visualizzo correttamente i caratteri "speciali" nonostante abbia impostatoCREATE DATABASE ***
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;

Qualche consiglio da darmi?
Grazie.

Ringhio81
04-06-2008, 14:19
Se fai una select direttamente sul db come li vedi?

lore_83
05-06-2008, 21:25
Ciao e grazie per la risposta.

Ho scoperto che prelevando i valori "strani" dal db vedo correttamente le stringhe sul browser, quindi potrebbe essere solo un problema di memorizzazione.

Rimane però un problema: l'inserimento di stringhe del db con caratteri speciali (cirillico, ideogrammi...).
Aggiungo che nella creazione del database ho imposto:

CREATE DATABASE ***
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;

GRANT CREATE, DROP, SELECT, UPDATE, INSERT, DELETE
...;

GRANT SELECT, UPDATE, INSERT, DELETE
...;

USE ***;
SET NAMES 'utf8';

Nelle pagine html impongo la codifica utf8 ed in effetti i caratteri li vedo SEMPRE in maniera corretta nel browser.

In ogni connessione imposto

$conn->query('SET NAMES \'utf8\'');

eppure ottengo NULL come risultato se provo ad inserire caratteri speciali nel database.
Sono riuscito ad inserire ad esempio la ç e la ü nel mio db senza problemi, ma credo facciano parte della codifica latin1.

Come faccio ad inserire nel database OGNI tipo di carattere?

Grazie.