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

    Codifica utf8 Db myslq e Pdo

    Ciao a tutti...
    Ho un sito in php 5.6 con un'amministrazione ed usando PDO salva su un db mysql.

    Voglio usare la codifica UTF8, quindi:

    nella pagina ho <meta charset="utf-8">

    il DB è in utf8_general_ci

    nella connessione ho:

    setlocale(LC_ALL, 'it_IT.UTF-8');
    $this->pdo->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");

    Ho due server che si comportano in modo diverso, vorrei capire quale sia il giusto comportamento tra i due.

    frase salvata: " l'Aloe vera è una pianta le cui proprietà "

    nel primo, se guardo su DB la frase viene salva come:

    " l'Aloe vera è una pianta le cui proprietà "

    nel secondo, se guardo su DB la frase viene salva come:

    l’Aloe vera è una pianta le cui propriet�

    Partiamo con le domande:

    1. quale delle due è corretta? nel senso... se sto salvando i miei testi in utf8... sul db cosa mi devo trovare? la frase leggibile... o quella con caratteri strani?
    perchè andando a guardare un convertitore di testi online (https://cafewebmaster.com/online_tools/utf8_encode).. mi verrebbe da dire quella con caratteri strani, ma non ne sono tanto sicuro...

    2. se è corretta quella con il testo leggibile... da cosa dipende che salvi in quel modo?
    non capisco perchè sul primo server la salva in un modo e nel secondo la salva in un altro.
    Parliamo dello stesso db, dello stesso codice... forse sono impostazioni nel server? o qualcosa di impostato male su uno dei due db?

    Spero che qualcuno sappia darmi indicazioni in merito


    ho trovato anche questo
    https://code.i-harness.com/it/q/4a12ae
    e da qui mi verrebbe da dire che non dovrebbe salvarmi i testi con caratteri strani... ma io ho fatto tutto quello che c'è scritto li, compreso il SET NAMES
    Ultima modifica di Pandax; 18-12-2018 a 13:41

  2. #2
    Mi sono autorisposto credo...

    Non so esattamente perchè i due server salvano in modo diverso, probabilmente uno dei due forza l'utf8 in qualche modo.

    Sta di fatto che se

    voglio salvare: " l'Aloe vera è una pianta le cui proprietà "

    su DB mi devo aspettare che venga salvata come:

    " l'Aloe vera è una pianta le cui proprietà "

    (o almeno spero di aver capito giusto... nel caso qualcuno mi corregga, grazie)

    Il motivo per cui non funzionava era che MYSQL_ATTR_INIT_COMMAND
    non può essere settato dopo la connessione, ma va settato durante, come option
    nel seguente modo

    $this->pdo = new NestedPDO("mysql:host=" . $HOST, $USERNAME, $PASSWORD,
    array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => FALSE,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
    ));

    rif. https://stackoverflow.com/questions/...s-in-php-mysql

Tag per questa discussione

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.