Caratteri Speciali: problemi di visualizzazione

Sto impazzendo appresso alla gestione dei caratteri speciali.

se nel browser scrivo una '' il server apache me la traduce come una 'è'

questo accade anche se in un form uso lettere con accenti come la '' appunto.

Non solo, MySql me la registra come 'è', ma poi Apache me la visualizza (tramite php) come ''.

Il sorgente HTML me la indica infatti come ''.

Se provo a usare htmlentities (); il comando si applica a 'è' e non a '', quindi viene praticata la conversione in html di 'è'.

Che gli prende a questo qui?

Uso Apache 2 con MySql 4.1.12 su Linux

inviato 10 anni fa
arjuna
X 0 X

E' una questione di set di caratteri. Poich sono diversi i programmi che maneggiano i dati bisogna far si che tutti parlino la "stessa lingua"

Supponendo che tu voglia usare il set standard di caratteri occindetali, ti conviene iniziare a specificarlo al browser.

Ad esempio con un metatag:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Cambia qualcosa?

Per adesso evita di usare htmlentities e controlla direttamente l'output degli script (HTML)

Quando tutto sar funzionante allora reintrodurrai l'htmlentities

:bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

gia impostato cos:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="DC language" content="ita" scheme="RFC1766" />
risposto 10 anni fa
arjuna
X 0 X

Allora verifichiamo che MySQL stia usando il corretto set di caratteri:

esegui questa query:

show variables like '%character%';

e riporta il risultato

:bye:

risposto 10 anni fa
Gianni Tomasicchio
modificato 10 anni fa
X 0 X

ecco

character_set_client utf8

character_set_connection utf8

character_set_database latin1

character_set_results utf8

character_set_server latin1

character_set_system utf8

character_sets_dir /usr/share/mysql/charsets/

risposto 10 anni fa
arjuna
X 0 X

ecco il problema, MySQL usa l'utf8 per comunicare. Cerca il file di configurazione di mysql (non so dov' in linux, forse in /etc/my.cnf) e setta tutte le lingue in latin1

[mysql]

default-character-set=latin1

[mysqld]

default-character-set=latin1

:bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

dato che quelle voci non le trovo all'interno del file che mi hai indicato desumo che le debbo aggiungere a mano... confermi?

risposto 10 anni fa
arjuna
X 0 X

esatto ;)

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Se pu tornare utile su una fedora 4 lo ho risolto modificanto il file i18n in /etc/sysconfig del server in questo modo.

LANG="it_IT@euro"

SUPPORTED="it_IT:it"

SYSFONT="latarcyrheb-sun16"

ciao

risposto 10 anni fa
Lokki
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda