Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Caratteri diversi con php e mysql

    Ciao a tutti,
    premetto che sono alle prime armi con il php e il mysql e per questo sto leggendo un libro a proposito con vari test da fare.
    Ora ho un problema che io penso sia ricollegabile al mysql che ho installato sul mio pc.
    Sul mio spazio web tutto è regolare, ma lavorando in locale i dati estrapolati dal database mi cambiano le lettere accentate con altre.
    Un esempio è la 'è' che viene sostituita da 'Š'.
    Credo che sia da fare qualche modifica alla configurazione di mysql, ma non so proprio da dove cominciare.
    Potete aiutarmi?
    Resto in attesa e ringrazio anticipatamente.
    http://www.taniservice.com una volta il miglior artigianato online... ora un uomo libero

  2. #2
    E' la dura vita del programmatore web, un dubbio amletico:

    ISO o UTF? Questo è il problema.

    Il problema che ti si pone è dovuto alla codifica dei caratteri, principalmente ne esistono due, ISO-8859-1 o UTF-8.

    ISO è usato prevalentemente in ambiente windows.
    UTF in ambiente linux.

    Il bello è che sono indipendenti dalla macchina, ovvero sotto windows puoi benissimo fare pagine UTF e al contrario sotto Linux fare le ISO.

    Quando si mescolano le due codifiche nasce l'apocalisse.

    Una volta che hai deciso in che codifica devono essere fatte le tue pagine, meglio se UTF-8, perché è più completo (Linux rulez), dovrai accertarti delle seguenti cose:

    1° L'header delle tue pagine deve essere di quella codifica, <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    2° I tuoi file (html, php o quello che usi) devono essere tutti salvati in quella codifica, per verificarlo basta che apri un qualsiasi file col notepad di windows e vai su salva con nome, in basso trovi un menù a tendina Codifica, se è ANSI sta per ISO.

    3° Il tuo database deve avere la codifica dei caratteri del tipo scelto.

    E comunque non è detto che possano accadere, pur seguendo tutte queste direttive, che nel tuo sito non vadano a finirci caratteri col charset sbagliato, quindi ti consiglio di convertire tutti i caratteri affetti da problemi di charset (accentati ed altro) nella loro relativà entità HTML, così in barba alla codifica si vedono bene.

    Piaciuta la risposta?

  3. #3
    Grazie Debiru, per la rapida ed esaustiva risposta, ma ancora ti devo chiedere maggiori delucidazioni.
    Qui di seguito inserisco le righe della pagina html:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>La nostra lista di barzellette</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    </head>

    L'ho confrontato con altri e tutto sembra regolare e in linea lo puoi vedere a questo link: http://www.taniservice.com/jokelist.php
    come si può vedere c'è una 'è' e la si vede benissimo in maniera corretta.
    Il problema si presenta solo quando la pagina php la eseguo in locale sul mio pc, da qui viene il mio dubbio che sia una configurazione di mysql.
    Qui allora prendo in considerazione il tuo 3° punto: come faccio a vedere ed eventualmente modificare la codifica del database?
    http://www.taniservice.com una volta il miglior artigianato online... ora un uomo libero

  4. #4
    Con il phpmyadmin puoi vedere l'sql generato per creare la tabella (basta che fai export) li ti dice il collate del db, delle tabelle e anche dei campi.

    Confronti i due sql generati (quello online con quello offline) e vedi se i collate sono differenti.

    Per eventuali modifiche non so dirti, prova a smanettare con phpmyadmin che è poderoso.

  5. #5
    Sono andato a verificare nel file my.ini la configurazione di mysql e ho trovato queste due righe:

    [mysql]

    default-character-set=latin1

    Credi che sia qui da cambiare?
    ... e se si, come?
    http://www.taniservice.com una volta il miglior artigianato online... ora un uomo libero

  6. #6
    Guarda, il default non serve che lo cambi, tanto alla creazione del database puoi decidere quale charset utilizzare.

    Devi controllare però se effettivamente il tuo db sia di un determinato charset, a prescinedere dal charset di default.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.