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

    Codifica giusta ma caratteri errati.

    Sto modificando un progetto scritto con codifica Latin1 e ISO Occidentale.

    Non so perchè però se vado a fare un inserimento nel database i caratteri accentati mi vengono salvati come punti interrogativi (?).

    La pagina risultante ha codifica ISO. Il database MySQL e le tabelle interessate hanno codifica Latin1. I file .php sono indicati come codifica ANSI.

    Come mai non riesco a visualizzare correttamente questi caratteri?

    Se li stampo prima dell'insert ovviamente va tutto bene; ma passando dal database si corrompono inesorabilmente.

    Cosa dovrei controllare?

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    L'inserimento come lo fai?

  3. #3
    Con una semplice INSERT. Tu a che cosa ti riferisci?
    Codice PHP:
        $descrizione nl2br($descrizione);
            
        
    $sql "INSERT INTO Messaggi (Titolo, Descrizione, DataInserimento, DataScadenza) 
                VALUES
                ('
    $tit', '$descrizione', NOW(), $data)"
    Comunque ho visto che risolve se converto in entità html (ovviamente). L'unica menata è che poi per reinserire i dati in una form (per la modifica o la risposta) devo convertire nuovamente in caratteri speciali altrimenti negli <input /> mi vengono titoli tipo "&Egrave; una fatta cos&igrave;".

    Non capisco però dove sia il problema....

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Intendevo dire se fai l'inserimento da phpmyadmin o da un tuo form.

    A quanto ho capito dal tuo form, la pagina che lo contiene ha la codifica corretta?

    ciao

  5. #5
    No, phpMyAdmin non lo uso. Uso il Query browser di MySQL in locale.

    Ho una form in una pagina di inserimento che invia a sè stessa ed effettua la INSERT.
    La codifica rilevata da Firefox è ISO-8859-1.
    Sul DB ho la codifica in Latin1.
    E i file .php sono in formato ANSI.

    A dirla tutta chi ha scritto i software ha creato una struttura a frames. E se ha specificato la codifica nel frame container è vero anche che nelle singole pagine non ha messo neanche le intestazioni html.

    Apparte la scorrettezza dell'operazione però la codifica rilevata poi è quella giusta.

    Come posso capire se è un problema di codifica della pagina o e se il problema è nell'inserimento nel DB?
    Dovrei controllare il charset della connessione al database?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    Dovrei controllare il charset della connessione al database?
    Si

    Se non è latin1 prova ad eseguire questa query

    SET NAMES latin1

    (Non ricordo se latin1 o latin_1 o _latin1)

    Poi fai l'inserimento e alla fine chiudi la connessione
    Conosci te stesso(?)
    (..e allora perchè scassi a me? )

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    se hai l'estensione mb_string abilitata puoi provare a tracciare la codifica rilevata con mb_detect encoding.

    Inoltre dovresti controllare il charset utilizzato nella connessione.


  8. #8
    Originariamente inviato da Leandro
    Si

    Se non è latin1 prova ad eseguire questa query

    SET NAMES latin1

    (Non ricordo se latin1 o latin_1 o _latin1)

    Poi fai l'inserimento e alla fine chiudi la connessione
    Ho impostato il SET NAMES latin1 ma non risolve. Cambia solo che invece dei punti interrogativi ho le è strane.

    E' importante chiudere la connessione? Di suo il softwrare non se ne occupa, ma dovrebbe venir fatto automaticamente.

  9. #9
    Originariamente inviato da gianiaz
    se hai l'estensione mb_string abilitata puoi provare a tracciare la codifica rilevata con mb_detect encoding.

    Inoltre dovresti controllare il charset utilizzato nella connessione.

    Speravo di poterla abilitare ma purtroppo pare che Aruba non supporti tale estensione; e avendo gli hosting con lei non mi posso concedere il lusso di usare mbstring

    Infatti adesso devo tirar su anche un sito multilingua e non so come ovviare alla mancanza di mbstring... non so cosa devo fare per gestire i multibyte!!

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Anche io ho avuto sti problemi, prova a fare un controllo sul charset del file php che gestisce l'inserimento.

    Per esempio se apri ps-pad o notepad++ sul formato del file seleziona UTF-8.
    A volte risolve il problema.

    Per esempio se facevo pagine html con charset:utf-8 ma il file non era salvato in utf-8 non mi metteva lo stesso i caratteri speciali e php non li gestiva correttamente.
    Poi salvando il file in formato UNIX con codifica UTF-8 ho risolto il problema.

    Prova.

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.