Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    192

    Rombo nero con punto interrogativo

    se leggo dal db le lettere accentate sono trasformate in un rombo nero con punto interrogativo bianco al centro.
    Risolvo solo se dopo avere messo il valore letto in una variabile lo tratto così:
    $valore=utf8_encode ($valore);

    il mio scenario è questo:
    database:
    collation del db, della tabella e del campo: utf8-general-ci.

    pagina php che legge:

    <meta charset='utf-8' />

    Vorrei che funzionasse (come credo debba essere) senza usare la func utf8-encode.

  2. #2
    Probabilmente non tutto e` UTF-8. Controlla che anche la connessione a MySQL sia in UTF-8. Per farlo puoi eseguire questa query non appena apri la connessione:

    codice:
    SET NAMES utf8
    Per esempio se usi PDO puoi farlo direttamente alla costruzione dell'oggetto:

    Codice PHP:
    $db = new PDO "mysql:host=" HOSTNAME ";dbname=" DBNAME ";charset=UTF-8"USERNAMEPASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") ); 
    A questo punto utf8_encode() non ti deve piu' servire.
    Prova e fammi sapere

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    192
    SET NAMES utf8 ha risolto!!

    il PDO non lo uso...me lo consigli?

    Grazie infinite mi sono dannato l'anima dietro sta cosa.

  4. #4
    PDO te lo consiglio vivamente. E' relativamente semplice da usare, mentre le funzioni mysql_* sono ormai vecchie e deprecate (e vulnerabili alle SQL injection).

    Felice di esserti stato di aiuto

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.