Avatar billede mini-me Nybegynder
05. august 2008 - 22:49 Der er 6 kommentarer og
1 løsning

Opret UTF-8 site

Hej,

Når jeg skyder følgende kode af :

set fs = Server.CreateObject("Scripting.FileSystemObject")
                set fname = fs.CreateTextFile(server.MapPath("/" & strTitle & ".asp"),true)
                fname.write sSiteData
                fname.Close
                set fname=nothing
                set fs=nothing

så opretter jeg en fil på vores webserver. Men det er ikke UTF-8.

Findes der en metode til at sikre at siden der bliver oprettet er UTF-8?

Ellers fukker mit tegnsæt helt op...
Avatar billede arne_v Ekspert
05. august 2008 - 23:06 #1
Saa vidt jeg ved understoetter Scripting.FileSystemObject ikke UTF-8 og du er
noedt til at bruge ADODB.Stream.
Avatar billede arne_v Ekspert
05. august 2008 - 23:07 #2
Avatar billede mini-me Nybegynder
05. august 2008 - 23:27 #3
Hej Arne,

Fik fil-oprettelsen til at virke, men kan se jeg umiddelbart også skal brude adodb.stream når jeg retter i den.

Har følgende kode nu:

Dim fso, f, filespec
        Set fso = CreateObject("Scripting.FileSystemObject")
        filespec = server.MapPath("\" & strTitle & ".asp")
        Set f = fso.OpenTextFile(filespec,1)
       
        ' Læs linie for linie indtil slutningen af filen
        Do While not f.AtEndOfStream
              html = html & f.ReadLine & vbCrlf
        Loop

        f.Close
       
        startpos = InStr(html, "<!--content_start-->")
        stoppos = InStr(html, "<!--content_end-->")
           
        removeStr = Mid(html, startpos+20, stoppos-startpos-20)
               
        strFile = replace(html,removeStr,vbCrlf & Request.Form("inpContent") & vbCrlf)
       
        Set f = fso.OpenTextFile(filespec,2)
        f.write strFile   
       

Kan du hjælpe med at få det til at virke?
Avatar billede mini-me Nybegynder
06. august 2008 - 00:57 #4
Det her virker næsten:

    ' Vi finder filen via FSO
        Dim fso, f, filespec
        Set fso = CreateObject("Scripting.FileSystemObject")
        filespec = server.MapPath("\" & strTitle & ".asp")
        ' Gør filen læseklar
        Set f = fso.OpenTextFile(filespec,1)
       
        ' Læs linie for linie indtil slutningen af filen
        Do While not f.AtEndOfStream
              html = html & f.ReadLine & vbCrlf
        Loop

        f.Close
       
        ' find start og stop
        startpos = InStr(html, "<!--content_start-->")
        stoppos = InStr(html, "<!--content_end-->")
       
        ' find streng mellem start og stop
        removeStr = Mid(html, startpos+20, stoppos-startpos-20)
       
        ' Erstat indhold mellem start og stop
        strFile = replace(html,removeStr,vbCrlf & Request.Form("inpContent") & vbCrlf)
       
        ' ADO objektet
       
        const adTypeBinary = 1
        const adSaveCreateOverwrite = 2
        const adModeReadWrite = 3

        Set objStream = server.CreateObject("ADODB.Stream")
        objStream.Open
        objStream.CharSet = "UTF-8"
        objStream.WriteText(strFile)
        response.Write(server.MapPath("\" & strTitle & ".asp"))
        objStream.SaveToFile server.MapPath("\" & strTitle & ".asp"), adSaveCreateOverWrite
        objStream.Close   



Men den tilføjer i 1 linie af filen sådan noget lort her.: 

og jo mere jeg gemmer filen desto mere kommer der... nogen ideer?
Avatar billede mini-me Nybegynder
06. august 2008 - 09:09 #5
Anyone?
Avatar billede mini-me Nybegynder
06. august 2008 - 10:52 #6
Hmmm løste det selv ved blot fortsat at bruge FSO til at redigere siden. Når den er oprettet som UTF-8 foretager den ikke ændringer i filtypen.

Arne smid et svar
Avatar billede arne_v Ekspert
07. august 2008 - 04:23 #7
ok
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