Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Insert e utf-8

  1. #1

    Insert e utf-8

    Ho un sito multilingua codificato in utf-8.
    Il mio problema è che quando, tramite una query sql inserisco del testo in cinese contenuto in una casella di testo nel database per poi ripescarlo, viene visualizzato con una serie di punti di domanda.

    La connessione al db, contenuta nel file di configurazione incluso da tutte le pagine, l'ho impostata in questo modo
    Codice PHP:
    $db_username='xxxxxxxx';
    $db_password='xxxxxxxxxx';
    $db_host='xxxxxxxxxxxx';
    $db=mysql_connect("$db_host","$db_username","$db_password") or die(mysql_error()); 
    $db_select mysql_selectdb("xxxxxxxxxx") or die(mysql_error()); 

    mysql_query("SET NAMES 'utf8'"$db) or die("Errore: ".mysql_error());
    mysql_query("SET CHARACTER SET 'utf8'"$db) or die("Errore: ".mysql_error()); 
    Nella head di tutte le pagine ho scritto questo codice

    Codice PHP:
    header("Content-Type: text/html; charset=utf-8"); 
    La query al db è questa
    Codice PHP:
    $str_sql "INSERT INTO tabella(uno,due,tre,control,time) VALUES('$uno','$due','$tre','$control','$time')";
    mysql_query($str_sql) or die("Errore: ".mysql_error()); 
    La stringa mi arriva codificata in utf-8 dalla casella di testo. Lo so perchè per contarne il numero di caratteri uso questa apposita funzione
    Codice PHP:
    function utf8_strlen($str) {
      
    $str stripslashes($str);
      
    $count 0;
      for (
    $i 0$i strlen($str); ++$i) {
        if ((
    ord($str[$i]) & 0xC0) != 0x80) {
          ++
    $count;
        }
      }
      return 
    $count;

    Per quanto riguarda MySQL, ha queste impostazioni
    Set di caratteri MySQL: UTF-8 Unicode (utf8)
    collazione della connessione di MySQL: utf8_unicode_ci
    La collation delle colonne della tabella è utf8_general_ci.

    In locale funzionava tutto bene, i problemi li ho sull'host!

  2. #2
    up

  3. #3
    up again.

  4. #4
    mmm dunque di solito SET CHARACTER SET non serve mentre con set names è sempre bene specificare la collation quindi

    SET NAMES utf8 COLLATE utf8_general_ci

    detto questo:
    - che versione ha del database il tuo hoster?
    - le pagine html che scrivi contengono il content-type/charset
    - hai guardato gli header che ti spedisce l'hoster?
    - hai guardato gli header che invia il browser?
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    Originariamente inviato da daniele_dll
    mmm dunque di solito SET CHARACTER SET non serve mentre con set names è sempre bene specificare la collation quindi

    SET NAMES utf8 COLLATE utf8_general_ci

    detto questo:
    - che versione ha del database il tuo hoster?
    - le pagine html che scrivi contengono il content-type/charset
    - hai guardato gli header che ti spedisce l'hoster?
    - hai guardato gli header che invia il browser?
    Ciao, grazie per l'aiuto.
    Qui trovi i dettagli del db.
    Come faccio a guardare gli header che spedisce l'hoster o invia il browser?

  6. #6
    Già, mi scordavo di dire che le pagine contengono il content-type/charset in utf-8.

    Up

  7. #7
    up

  8. #8
    Per quanto riguarda gli header che invio e ricevo, sembra tutto ok. Il problema temo sia nel database, ma non capisco quale possa essere!

    Nell'header inviato ho
    [Accept-Language] = it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
    [Accept-Charset] = ISO-8859-1,utf-8;q=0.7,*;q=0.7


    Nell'heade ricevuto
    [Accept-Language] = it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
    [Accept-Charset] = ISO-8859-1,utf-8;q=0.7,*;q=0.7

  9. #9
    up

  10. #10
    up.
    Nel database anche le lettere accentate non vengono salvate correttamente. Non capisco cosa c'è che non va. In locale funzionava tutto perfettamente!
    Mi date una mano?

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.