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

    Visualizzazione caratteri accentati

    Ciao a tutti, ho il seguente problema:
    Posseggo un database con un elenco di città già popolato. Ora quando eseguo un query tramite php per visualizzare le città ho notato che ad esempio nella stringa Forlì-Cesena compare al posto della ì un carattere strano con un punto interrogativo. Invece se faccio la query direttamente dal database (nella riga di comando) la stringa Forlì-Cesena viene visualizzata correttamente. Uso php 4.4.8 senza moduli aggiuntivi e il database (mysql) che ho creato ha codifica di default utf8 e in ogni tabella ho selezionato come codifica sempre utf8.
    Come header delle pagine php sto usando:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    Come posso risolvere il problema??
    Grazie......

  2. #2
    Usa htmlspecialcharts:

    http://it2.php.net/manual/it/functio...ecialchars.php

    Anche se io preferisco htmlentities:

    http://it2.php.net/manual/it/function.htmlentities.php

    L'unica cosa che non converte è lo \n in
    . Quello lo devi fare a mano con str_replace:

    http://it2.php.net/manual/it/function.str-replace.php

  3. #3
    Devi impostare il charset della connessione su UTF8 subito dopo la connessione usando le query

    SET NAMES utf8

    e

    SET CHARACTER SET utf8

    dai un occhio qua
    http://dev.mysql.com/doc/refman/5.0/...onnection.html

    Dato che tratti tutto in UTF8, ovviamente, non devi utilizzare ASSOLUTAMENTE alcun tipo di funzione per il trattamento delle stringhe di php perché php misconosce completamente i caratteri multibyte come ad esempio i caratteri accentati

    se ti serve effettuare operazioni sulle stringhe devi utilizzare l'estensione mbstring

    Nel caso ti serva usare htmlentities o htmlspecialchar ricordati di specificare come terzo parametro UTF8 altrimenti anche li farà casini
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    1) Allora per qunto riguarda htmlentites già avevo provato a farlo ma non è cambiato nulla.
    Invece ho provato a utilizzare la procedura postata da daniele_dll ora qualcosa è cambiato al posto di visualizzare "Forlì-Cesena" visualizza "Forl-Cesena" cioè toglie via la ì!!!! Come posso risolvere????? ......Grazie

    Le query che ho eseguito sono:
    mysql_query("SET NAMES utf8",$db);
    mysql_query("SET CHARACTER SET utf8",$db);

    2) L'estensione mbstring non è disponibile su aruba

  5. #5
    che cos'hai scritto?
    $htmlStr = htmlentities($strFromDB); ?

    Se è così è sbagliato, dato che ci ho sbattuto la testa anch'io prima di capire che devi usare :
    $htmlStr = htmlentities($strFromDB, ENT_QUOTES, 'UTF-8');

    Così funziona.

  6. #6
    Originariamente inviato da artorius
    che cos'hai scritto?
    $htmlStr = htmlentities($strFromDB); ?

    Se è così è sbagliato, dato che ci ho sbattuto la testa anch'io prima di capire che devi usare :
    $htmlStr = htmlentities($strFromDB, ENT_QUOTES, 'UTF-8');

    Così funziona.
    se a lui arriva, stampandola cosi com'è, con il punto interrogativo vuol dire che da qualche parte è stata già fatta una pseudo conversione in qualche altra codifica che danneggia l'utf8 e quindi buttargli sopra un htmlentities non serve ... se lui vede 1 solo byte del carattere, anche dal sorgente della pagina html, l'altro byte non c'è ^^
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Ho provato ad usare htmlentities($strFromDB, ENT_QUOTES, 'UTF-8') ma non è cambiato nulla, aveva ragione il moderatore, continuo a visualizzare il carattere con il punto interrogativo al posto della ì!!!!
    Aiutatemi.....grazie

  8. #8
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Osservazione forse banale: che codifica usi nel browser per visualizzare le pagine? Dal menù visualizza->codifica (o qualcosa del genere) puoi cambiare la codifica dei caratteri...se tutto è in UTF-8 è l'unica cosa che mi viene in mente...
    forse è utile questo post


  9. #9
    Originariamente inviato da Gab-81
    Osservazione forse banale: che codifica usi nel browser per visualizzare le pagine? Dal menù visualizza->codifica (o qualcosa del genere) puoi cambiare la codifica dei caratteri...se tutto è in UTF-8 è l'unica cosa che mi viene in mente...
    forse è utile questo post

    io ho idea che i dati nella tabella non siano in UTF8 per questo succede tutto sto casino :\

    @mondocalcio il problema potrebbe risiedere nel fatto che quando hai effettuato l'importazione dei dati che erano in utf8 la connessione era in latin1 e quindi sono stati convertiti i vari caratteri nei relativi codici UTF8 facendo un gran casino ... potrebbe essere questo come potrebbe essere tutt'altro

    sinceramente se la codifica delle pagine è in utf8, la connessione è in utf8, il database è in utf8 ... non capisco dove possa stare il problema

    fai una cosa ... utilizza la funzione utf8_decode prima di fare l'echo per inviarli al browser e se ti dara risultati validi allora vorrà dire che effettivamente è successo qualche casino al momento dell'importazione dei dati
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.