Visualizzazione risultati 1 fino 14 di 14

Discussione: memorizzare accenti in file di testo

  1. #1
    Guest

    Predefinito memorizzare accenti in file di testo

    Ho un database in cui ho memorizzato delle stringhe che contengono anche accenti. Se stampo la stringa come output html mi visualizza il tutto tranquillamente.

    Io però vorrei memorizzare questi dati in un file txt. Ho utilizzato questo codice.

    Codice PHP:
    $testo = "àààààààààààààà"; // testo preso dal db
    $identificatore = fopen("file.txt", "w");

    // Scrivo i dati nel file
    fwrite($identificatore, $testo);

    // Chiudo il file
    fclose($identificatore);
    Quando vado ad aprire il file txt gli accenti vengono visualizzati con simboli strani, stessa cosa con il simbolo del web.
    Pensavo di cambiare il charset del file txt, ma non so se è la cosa giusta e soprattutto non saprei come farlo.

    Sapete darmi una mano? spero di non aver aperto un nuovo 3d (ho già fatto una ricerca ma non trovo niente che faccia al caso mio).

    Grazie

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da sql Visualizza messaggio
    Sapete darmi una mano? spero di non aver aperto un nuovo 3d (ho già fatto una ricerca ma non trovo niente che faccia al caso mio).
    Sicuramente è un problema di charset. Per i file txt non esiste un modo standard per indicare il tipo di charset, ma devi usare un editor che cerchi di indovinarlo o che ti permetta di specificarlo manualmente (es. Notepad++).


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    Puoi usare preg_replace() e degli array per sostiuire i caratteri accentati con le rispettive entità.

  4. #4
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da gabryhacker Visualizza messaggio
    Puoi usare preg_replace() e degli array per sostiuire i caratteri accentati con le rispettive entità.
    E se ci attacchi due razzetti vai sulla luna. Cosa c'entra?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  5. #5
    Guest

    Predefinito

    C'entra perchè se ha problemi a memorizzare gli accenti, e se poi li deve stampare su una pagina html può memorizzare nel file di testo le entità, non credi?

  6. #6
    Guest

    Predefinito

    A parte il fatto che in quel caso dovrebbe usare htmlspecialchars, che è fatta apposta.
    La tua "soluzione" in verità è un modo per aggirare il problema, ma non lo risolve.


    Ciao!

  7. #7
    Guest

    Predefinito

    più che altro mi servirebbe il file di testo non per stamparlo sullo schermo ma per consegnarlo a una terza persona che lo aprirà con qualche programma tipo word o altro.

    Cosa strana è che se alla variabile $testo inputo manualmente una stringa con lettere accentate funziona bene, se invece popolo la variabile con i valori del database il tutto comincia a dare problemi.

  8. #8
    Guest

    Predefinito

    Hai ragione debug, non avevo pensato a htmlspecialschars().
    @sql: meglio usare htmlspecialchars()

  9. #9
    Guest

    Predefinito

    ma allora non hai capito.
    Quello non risolve il problema!
    Anzi, ora che sql ha detto che il file txt dovrà essere aperto e non stampato in una pagina web, inserire le entità html è del tutto fuori luogo.


    Ciao!

  10. #10
    Guest

    Predefinito

    In questo momento ho un po' di sonnolenza

  11. #11
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da sql Visualizza messaggio
    Cosa strana è che se alla variabile $testo inputo manualmente una stringa con lettere accentate funziona bene, se invece popolo la variabile con i valori del database il tutto comincia a dare problemi.
    Non è tanto strano. Se il database ha un charset (poniamo UTF-8) e il tuo PC ne ha un altro (tipo Latin-1) succede che se finché modifichi e visualizzi il file dal tuo PC hai sempre lo stesso charset e tutto va bene, ma quando i dati arrivano dal DB il charset è diverso e visualizzi caratteri strani. Devi cercare di rendere il tutto omogeneo.

    più che altro mi servirebbe il file di testo non per stamparlo sullo schermo ma per consegnarlo a una terza persona che lo aprirà con qualche programma tipo word o altro.
    Senza modificare il DB direi che ci sono due strade:
    - prima di consegnare a terzi il testo lo rielabori cercando di portalo al charset voluto
    - inserisci il testo in un formato di file che preveda l'indicazione del charset (es. un XML minimale).


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  12. #12
    Guest

    Predefinito

    domanda: se il database ha un charset utf8 (prima pagina di phpmyadmin) e il campo della tabella ha un collation latin1_swedish_ci, con che set di caratteri vengono memorizzati i dati?

  13. #13
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da sql Visualizza messaggio
    domanda: se il database ha un charset utf8 (prima pagina di phpmyadmin) e il campo della tabella ha un collation latin1_swedish_ci, con che set di caratteri vengono memorizzati i dati?
    Vale l'impostazione più specifica, in questo caso il campo della tabella. Però attento che quel valore non indica che dentro alla tabella i testi siano in Latin-1, ma indica soltanto che il database li inconsidera tali! Quindi dai una controllata i dati.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  14. #14
    Guest

    Predefinito

    ok, quindi se vedo i caratteri con gli accenti tipo à,ò,è,... sono latin-1.
    Il foglio php che mi memorizza sul file txt è latin-1 a sua volta e il charset della pagina php è latin-1....per questo non riesco a capire perchè il tutto non funziona correttamente.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •