Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327

    [MySQL] Accenti cannati da form

    Ennesimo problema con i caratteri in MySQL.
    Ho controllato collation e character set su mysql, ma non è quello il problema: inserendoli direttamente nel db, i caratteri accentati vengono resi correttamente.
    Il problema è quando inserisco dei dati con una query che raccoglie dati da un form: nel db i caratteri accentati cambiano. Che sia perchè utilizzo XHTML e quindi Utf8?
    Come risolvere?
    Thanx
    /* Let's Lead the Web to Its Full Potential */

  2. #2
    Prova a parsare i testi con mysql_escape_string() prima di fare la query di inserimento.

  3. #3
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327
    Non cambia nulla...
    /* Let's Lead the Web to Its Full Potential */

  4. #4
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327
    Succede proprio una cosa strana.
    Es. la e accentata (è) viene memorizzata nel db come "è".
    Quando guardo la pagina html col browser, la vedo correttamente, ma nel sorgente vedo "è".
    E per me è un grosso problema, visto che devo sostituire i caratteri speciali con entità carattere...

    Cosa può essere?
    /* Let's Lead the Web to Its Full Potential */

  5. #5
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327

    Trovato!

    Se a qualcuno può interessare, a dare problemi era il meta tag UTF8 nell'intestazione dei documenti XHTML contententi i form...
    /* Let's Lead the Web to Its Full Potential */

  6. #6

    Codifica caratteri

    Certo che interessa:
    da quello che ho capito io se il campo tabella è un VARCHAR bisogna scegliere la codifica dei caratteri che verranno inseriti.

    Io ho impostato UTF8-bin, ovvero l'UTF8 in binario, ma qualcuno mi dice che si potrebbe anche inserire UTF8_general_ci.

    Sai qual è la differenza?

    Da una ricerca in rete sembra che in molti hosting il problema stia venendo fuori adesso, nella creazione di campi tabella ma soprattutto per i backup o upload di dati serializzati su DBMS.

    Forse dipende da un upgrade con la recente versione 5.0 di MySQL?

    Quale codifica nei DBMS consigliate?
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  7. #7

    Codifiche

    Le sigle di codifica:

    utf8_bin: Unicode (multilingua), Binario
    utf8_general_ci: Unicode (multilingua), case-insensitive

    Quindi a rigor di logica è preferibile usare l'UTF8_bin

    Sapete per caso se si può escludere la scelta della codifica del charset o renderla automatica? (Per avere compatibilità con le vecchie tabelle che non la richiedevano).

    [Qualcuno risponderà?]
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  8. #8
    Utente di HTML.it L'avatar di Cheope
    Registrato dal
    Dec 2003
    Messaggi
    327
    Che tutti sti casini siano venuti fuori dalle ultime versioni di MySQL (4.1 e 5) è fuori discussione.
    Prima di postare questo messaggio, avevo letto diversi post sulla difficoltà di comparare campi di testo tra vecchie e nuove tabelle, tra charset definiti e charset attributi automaticamente con l'importazione di dati vecchio stile (senza codifica) in nuove versioni.
    Nel tuo caso, non ti so dire se è meglio uno o l'altro UTF-8, anche perchè finora ho sempre utilizzato lo swedish (per i caratteri accentati, che ovviamente non ci sono nell'UTF-8).
    Credo però (anche se devo ancora studiarmi la novità in dettaglio) che la scelta non sia obbligata a priori, nel senso che comunque, quando si effettua una query select, si può stabilire di volta in volta la modalità di confronto tra campi testo specificando la collation.
    /* Let's Lead the Web to Its Full Potential */

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Anche a me succede la stessa cosa coi caratteri accentati,solo non u so xhtml ma html semplice dove devo mettere la cosifica?
    Grazie.

  10. #10

    Definisci il charset in HTML

    metti nell'header html
    codice:
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

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.