Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Codifica Caratteri con Zend in un form

    Salve, ho un problema nella compilazione di un form creato con Zend_Form in particolare quando vado ad inserire dei caratteri accentati o altri caratteri speciali quali áéíóúçã per esempio.
    Ecco alcune prove fatte:
    Ho il nome "Modà" che inserisco in un campo. Quando effettuo il submit viene registrato nel DB in questo modo "Modã" e quando rivisualizzo il campo nel form questo appare vuoto.
    Per far visualizzare il contenuto del campo sempre tramite Zend_Form utilizzo:

    codice:
    ->setValue($valorecampo);
    Premetto che ho in ogni pagina la codifica UTF-8, tutti i file php sono settati in codifica UTF-8 e il DB ha anch'esso una codifica utf8_unicode_ci.

    Qualcuno sà come procedere o sà una guida per far apparire tutti questi caratteri?
    Ho visto parecchi altri thread su questo argomento ma nessuno mi è stato d'aiuto.
    Per altre informazioni sui file chiedete pure.

    Grazie
    Etahn78

  2. #2
    Classico problema di odifica caratteri.
    Devi verificare database, tabelle, colonne, connessione al db, browser e possibilmente fare sempre una pulizia dei dati in ingresso cambiando i vari èàòùì con i rispettivi à è ecc


  3. #3
    usi MySQL?

    controlla la Collaction: utf8_general_ci
    --- [color= darkorange]L'uomo è il computer più straordinario di tutti [/color]----

    http://www.simogrima.com

    Grifone

  4. #4
    Originariamente inviato da Dascos
    Classico problema di odifica caratteri.
    Devi verificare database, tabelle, colonne, connessione al db, browser e possibilmente fare sempre una pulizia dei dati in ingresso cambiando i vari èàòùì con i rispettivi à è ecc

    Hemm...il forum converte...intendevo dire

    i vari èàòùì con i rispettivi &agrave ; &egrave ; ecc (il puntoEvirgola va attaccato!)

  5. #5
    Intanto grazie per le risposte.
    Allora uso MYSQL con tutto il database in utf8_general_ci e la pagina web è codificata in utf-8.
    Ho letto sul sito di MYSQL che settando questa query:

    $db->query("SET CHARACTER SET UTF8");

    is equivalent to these three statements:

    SET character_set_client = UTF8;
    SET character_set_results = UTF8;
    SET collation_connection = @@collation_database;

    Quindi in teoria sono a posto: ma non è così. Quando vado a fare un insert con una parola con una lettera accentata ottengo il seguente errore:

    SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE3\xA8' for column 'denominazione' at row 1

    Una cosa strana è che se inserisco direttamente sul database (da PHPMyAdmin) una parola con lettera accentata viene registrata normalmente e viene correttamente visualizzata sul browser tranne per la a accentata (à). Con questa il campo viene visualizzato vuoto.

    Qualche idea su altre prove da fare?

    Grazie
    Ethan78

  6. #6
    Hmmm...se è tutto in utf-8 mi viene un sospetto...sul sistema è installato il "locale" giusto?

  7. #7
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Originariamente inviato da Ethan1978
    $db->query("SET CHARACTER SET UTF8");
    ...........................
    SET character_set_client = UTF8;
    SET character_set_results = UTF8;
    SET collation_connection = @@collation_database;
    verifica, attraverso la stessa connessione il valore di collation_database:
    Codice PHP:
    SHOW VARIABLES LIKE 'collation_database' 
    dallo script, NON (solo) da phpmyadmin
    Poi prova anche con SET NAMES
    http://dev.mysql.com/doc/refman/5.5/...onnection.html
    codice:
    SET NAMES 'charset_name' [COLLATE 'collation_name']
    
    SET NAMES indicates what character set the client will use to send SQL statements to the server. Thus, 
    SET NAMES 'cp1251' tells the server, “future incoming messages from this client are in character set
    cp1251.” It also specifies the character set that the server should use for sending results back to the 
    client. (For example, it indicates what character set to use for column values if you use a SELECT 
    statement.)
    
    A SET NAMES 'x' statement is equivalent to these three statements:
    
    SET character_set_client = x;
    SET character_set_results = x;
    SET character_set_connection = x;
    
    Setting each of these character set variables also sets its corresponding collation variable to the default 
    correlation for the character set. For example, setting character_set_connection to x also sets 
    collation_connection to the default collation for x. 
    ............
    To see the values of the character set and collation system variables that apply to your connection, use 
    these statements:
    
    SHOW VARIABLES LIKE 'character_set%';
    SHOW VARIABLES LIKE 'collation%';

  8. #8
    Ok... fatto come detto ed ho scoperto che mysql mi stà prendendo per

    Questo è il risultato di SHOW VARIABLES:

    collation_connection:latin1_swedish_ci
    collation_database:latin1_swedish_ci
    collation_server:latin1_swedish_ci

    Mi chiedo cosa devo fare per cambiarlo. Subito dopo la connessione al database ho messo:

    $db->query("SET NAMES 'UTF8' COLLATE 'utf8_general_ci'");

    ma continua ad essere latin1_swedish_ci.
    Ricapitolando ho ricontrollato tutto e la pagina web di risposta è con il meta:

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

    ed il DB è di tipo InnoDB e collation utf8_general_ci. Inoltre ogni tabella e campo è settato in questa maniera.

    Qualche istruzione per cambiare stà collation?

    Grazie
    Ethan78

  9. #9
    Ulteriore informazione:
    Se faccio invece SHOW VARIABLES LIKE 'character_set%' mi spunta:

    character_set_client:latin1
    character_set_connection:latin1
    character_set_database:latin1
    character_set_filesystem:binary
    character_set_results:latin1
    character_set_server:latin1
    character_set_system:utf8
    character_sets_dir:C:\Programmi\Zend\MySQL51\share \charsets\

    Spero qualcuno possa aiutarmi.

    Grazie
    Ethan78

  10. #10
    Io dico che probabilmente uscirò pazzo. Fino ad ora non mi era venuta la brillante idea di mettere online il tutto e vedere che succedeva fino a quando ho letto una risposta che mi chiedeva se era tutto in remoto o il locale.

    Ebbene in remoto funziona tutto senza fare ne SET nè altro ma solo con le impostazioni originali del meta, del db in utf8 e nient'altro.
    In locale continua a non funzionare completamente

    vado avanti col progetto e nel mentre se qualcuno ha un'idea delle differenze si faccia pure avanti

    Grazie
    Ethan78

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.