Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395

    scrittura file UNIX - UTF-8-BOM

    salve a tutti.

    Sto cercando di scrivere un file di testo e fin qui tutto bene.
    Lo scrivo così:
    codice:
    Dim objFSO, objTextFile 
    'Creazione dell'istanza FileSystem 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    'Apertura del file di testo 
    Set objTextFile = objFSO.CreateTextFile("C:\tmp\gara.txt") 
     objTextFile.WriteLine "prova"
     objTextFile.WriteLine "44"
    
    ecc.
    aprendo il file con notepad++ mi dice che il file è in formato Windows e codifica ANSI.

    Siccome il file poi deve venire letto d un programma particolare il file dovrebbe avere formato UNIX e codifica UTF-8-BOM.
    Per la codifica avevo trovato in rete che bastava inserire dopo il nome del file il testo ",true,true".
    (il primo true è per la sovrascrittura del file, il secondo per la codifica).
    Ma in questo modo la codifica viene impostata in UCS-2 LE BOM e questo non va bene.
    Inoltre il formato rimane Windows e non UNIX.

    C'è un modo per risolvere?

    Grazie

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    per questi problemi di codifica, solitamente, su usa creare un file campione.
    per poi, ovviamente, copiarlo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    bene.
    per avere un file "campione" potrei anche farlo.

    potrei fare così?
    leggo il file tramite asp, cancello tutto il suo contenuto e lo riscrivo?

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    se il file è sempre quello si.
    altrimenti fai una copia del campione e ci scrivi dentro.

    farei comunque una copia neutra originale da mantenere.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    Perfetto.
    Sono riuscito nell'intento.
    Siccome nel file originale le prime 3 righe non vengono mai modificate ho lasciato il file originale con solo quelle righe.
    Poi copio il file, lo apro e ci aggiungo il codice.

    Fin qui tutto perfetto ma....

    Ora mi trovo con un altro piccolo inghippo.
    Devo inserire una riga in cui c'è un carattere accentato.
    Aprendo notepad++ il carattere non viene letto a meno di non modificare manualmente la codifica in ANSI. Questo però non posso farlo altrimenti il file dal programma non verrebbe letto.

    Quindi chiedo, come faccio a scrivere correttamente le righe che presentano caratteri accentati?

    Grazie

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    uhm... strano, di solito il problema è l'opposto.
    non so che suggerire. puoi ovviare con le entità?

    per curiosità: puoi passarmi questo file che ci do un'occhiata?
    se si, caricalo zippato da qualche parte e passa l'indirizzo.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    poi vedo di caricarlo.
    di per sè non ovviare è un casino perchè le linee che andrò ad inserire provengono da un database e variano in base a diversi fattori.
    quindi dovrei smanettare parecchio per poi cercare le lettere accentate e sostituirle.

    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    Ho eseguito alcune prove ed ho capito che il problema non si presenta se scrivo
    objTextFile.WriteLine "città"

    ma solo se scrivo la riga andando a prendere il testo da una tabella di access.

    Che ci sia una codifica diversa in access?

  9. #9
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,812
    controlla bene cosa c'è scritto nel db,
    e fai attenzione che non ci siano passaggi che usino una codifica windows / ansi

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    Ho deciso di lavorare direttamente da server per capirci qualcosa.
    quindi
    se scrivo
    objTextFile.WriteLine "città"
    senza altra modifica, notepad++ non legge correttamente la à.
    quindi sulla pagina scrivo il meta charset 1252 e il carattere accentato viene letto correttamente.

    ora rimane da capire come convertire lo stesso carattere che proviene dal database.
    Ho notato che andando mettendo un server.HTMLEncode la à viene letta come à che dovrebbe essere (se non erro) carattere unicode.

    Ora mi rimarrebbe da convertire tale carattere.

    Ho fatto anche alcuni testi:
    Call Response.Write(Response.CodePage)
    mi restituisce 65001

    Response.Write Session.CodePage
    mi restituisce 1252

    Ora, considerando il fatto che se non utilizzo il meta tag la lettera accentata è identica sia che provenga da database o scritta manualmente...
    potrei non scrivere il server.htmlencode e impostare il codepage a 1252.

    Ma sia conR
    Response.Charset = "1252"che con
    session.CodePage = "1252"

    non funziona.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.