Avatar billede ms_2004 Nybegynder
13. juli 2005 - 12:18 Der er 3 kommentarer og
2 løsninger

Gemme fil med UFT8 tegnsæt

Hej eksperter,

Jeg har brug for at gemme en xml-fil i UFT8 tegnsæt, for at Æ,Ø og Å bliver fortolket korrekt i det program der benytter xml-filen efterfølgeden.

Lige nu benytter jeg Open...Print...Close til at oprette filen, men så bliver den til vist gemt som klassisk ASCII (er ikke inde i forskellen mellem tegnsættene).

Kan man via VB koden sikre, at filen bliver gemt i UFT8 tegnsættet?

Mvh
MS_2004
Avatar billede mungojerrie Nybegynder
13. juli 2005 - 13:05 #1
sådan gøres det i C#
XmlTextWriter writer = new XmlTextWriter(fileStream, System.Text.Encoding.GetEncoding(850));

Der må være noget lignende i VB....
Avatar billede mungojerrie Nybegynder
13. juli 2005 - 13:06 #2
glemte lige : FileStream fileStream = new FileStream()
Avatar billede philiph Nybegynder
13. juli 2005 - 16:39 #3
Det er en rigtig dårlig ide at benytte "strengbaseret" xml håndtering.

Benyt Microsoft's DOM i stedet. Den håndterer tegnsæt, specialtegn, og meget mere, og så er performance bedre end med simpel strenghåndtering (specielt med store filer).

eksempel:
Set xmldoc = New MSXML2.DOMDocument40
' opbyg dokument
xmldoc.Save filename

Der findes et SDK som hjælper dig igang på www.microsoft.com/xml (MSXML 4.0)
Avatar billede ms_2004 Nybegynder
15. juli 2005 - 09:40 #4
For at genere en txt-fil hvor man vil definere tegnsæt (f.eks. utf-8) kan gøres følgende:

Dim adoStreamOut As ADODB.Stream
Set adoStreamOut = New ADODB.Stream
adoStreamOut.Charset = "utf-8"
adoStreamOut.Open
adoStreamOut.WriteText "Indholdet i filen..."
adoStreamOut.SaveToFile c:\test.txt, adSaveCreateOverWrite

Der er skal være opretttet en reference til "Microsoft ActiceX Data Objects 2.8 Library". Der ud over skal charset værdien tilsyneladende angives med små bogstaver under nogle styresystemer, og med store under andre, for at det virker.
Avatar billede ms_2004 Nybegynder
15. juli 2005 - 09:44 #5
Filen man gemmer til skal selvfølgelig angives som en streng, så koden bliver:

Dim adoStreamOut As ADODB.Stream
Set adoStreamOut = New ADODB.Stream
adoStreamOut.Charset = "utf-8"
adoStreamOut.Open
adoStreamOut.WriteText "Indholdet i filen..."
adoStreamOut.SaveToFile "c:\test.txt", adSaveCreateOverWrite
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester