Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    caratteri speciali e meta content type

    Salve a tutti
    sto ristrutturando un portale e mi ritrovo con alcuni piccoli problemi con i caratteri speciali.

    In pratica le lettere accentate oppure il simbolo euro viene visualizzato con un punto interrogativo.

    I dati li pesco da un database mysql e li tiro fuori tramite php

    Nei meta tag aggiungo:

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

    ho anche provato con

    <meta charset="utf-8">

    ma niente, alcuni vengono visualizzati correttamente, altri no.

    Avete altri suggerimenti?
    Grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Leggi il link che ho in firma sui caratteri strani.

  3. #3
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    allora se vedo il database ho
    Codifica caratteri del server: UTF-8 Unicode (utf8)

    se vedo invece la tabella ho latin1_swedish_ci

    Sulla pagina ho php ho:
    <meta charset="utf-8"> e prima della connessione al database ho aggiunto mysql_set_charset("utf8"); come indicato nella tua guida.

    Solo che vedo ancora alcuni caratteri strani.
    Considerando che il sito è solo in italiano, come dovrei impostare il set di carattere?
    Ultima modifica di allin81; 29-03-2016 a 18:56

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    O tutto latin1_swedish_ci o tutto utf8, io ti consiglio il secondo.

  5. #5
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ma in utf8_general_ci?
    o in altri? ci sono vari formati di utf8, spanish, swedish, turkish, unicode ecc tranne italian

  6. #6
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ora noto che dopo aver messo il codice prima della connessione al database in alcune pagine esce:

    Warning: mysql_set_charset(): Access denied for user 'root'@'localhost' (using password: NO) in /var/www/vhosts/miosito.it/httpdocs/inc/config.php on line 2 Warning: mysql_set_charset(): A link to the server could not be established in /var/www/vhosts/miosito.it/httpdocs/inc/config.php on line 2

    Perche' esce?

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quel messaggio vuol dire che la connessione al DB fallisce, c'è una password impostata per l'accesso al DB? Il messaggio dice che non la stai usando.

    Di utf8 a scelta general oppure unicode.

    Comunque smetti di usare le funzioni mysql_ prima erano solo deprecate, adesso sono state eliminate del tutto dalle nuove versioni di PHP.

  8. #8
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    si c'e' una password, forse devo metterlo dopo la connessione al db?

    Cmq ho messo sia general che unicode ma continua a darmi quei caratteri sui record di 2 tabelle (offerte e recensioni)

    Cosa devo usare al posto delle funzioni mysql_?

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ma i caratteri strani da dove li vedi? Fai una query per recuperare i dati e li stampi con un echo, oppure guardando direttamente dentro alle tabelle con phpmyadmin (o simili)?

    La password devi usarla PER fare la connessione al db, attualmente quando fai mysql_connect(....)

    Al posto di mysql_ potresti usare mysqli_ (molto simili a mysql_, ma si usano in modo un po' diverso, guarda su php.net che parametri devi passare) che però pare che faranno la stessa fine delle mysql_, altrimenti meglio se usi PDO.

  10. #10
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ora ho notato che nel database erano entrati i caratteri errati, forse quando ho fatto fare il copia/incolla delle informazioni che mi servivano avranno copiato quei caratteri.
    Ho risolto con un ereg_replace per non cambiarli tutti, poi piano piano li modifico ad uno ad uno e tolgo l'ereg_replace

    Ho messo il codice "tuo" nella connessione ed ora non mi da piu' quel messaggio di errore, cosi': mysql_set_charset('utf8',$connessione);

    Ora mi vedo un po' questo PDO, ma non ho capito cosa accadrà, in futuro i siti potrebbero non funzionare se hanno le vecchie funzioni tipo mysql_ o mysqli_?

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.