Jag vill inte ha hela sidan som utf-8, utan bara själva filen som skapas ska vara i utf-8
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTextfil = objFSO.CreateTextFile("C:\Inetpub\wwwroot\sida\xml\xml.xml", True)
objTextfil.WriteLine("<?xml version=""1.0"" encoding=""UTF-8""?>")
objTextfil.WriteLine("<menu>")
objTextfil.WriteLine("<menu-item id=""xx"" newItems=""4"" />")
objTextfil.WriteLine("</menu>")
objTextfil.WriteLine("")
Set objFSO = Nothing
Har testat med att skriva:
Response.CharSet = "utf-8" innan xml ska skapas och Response.CharSet = "iso-8859-1" efter filen är skapad. Men det fungerar inte heller.
Jag får för mig att det du skriver till filen bara är en ström med bytes, som inte bryr sig om vilken teckenkodning du använder. Pröva att konvertera strängen. Jag hittade detta: http://www.thescripts.com/forum/thread223838.html
Response.CharSet är meningslöst i detta fall eftersom det enbart påverkar data som skrivs med Response.Write. Men har du prövat objTextfil.CharSet = "utf-8"? Jag vet inte om det funkar, men det kanske är värt att försöka.
Ska kolla länken, men vill bara tillägga att skriver man bara response.charset = "utf-8" innan så fungerar det. Men då visas resten av sidan som utf-8 med.
Nej, den beskrev något annat såg jag nu, sorry. Det där med objTextfil.CharSet var bara en gissning, så det är itne konstigt att det inte funkade. Och därmed har jag slut på idéer. Dock bör det finnas någon klass i .net för att konvertera mellan ISO och UTF-8. Pröva att googla.
Det här verkar fungera.
Men om någon annan vet bättre så?
<%
Function Encode_UTF8(astr)
utftext = ""
For n = 1 To Len(astr)
c = AscW(Mid(astr, n, 1))
If c < 128 Then
utftext = utftext + Mid(astr, n, 1)
ElseIf ((c > 127) And (c < 2048)) Then
utftext = utftext + Chr(((c \ 64) Or 192))
'((c>>6)|192);
utftext = utftext + Chr(((c And 63) Or 128))
'((c&63)|128);}
Else
utftext = utftext + Chr(((c \ 144) Or 234))
'((c>>12)|224);
utftext = utftext + Chr((((c \ 64) And 63) Or 128))
'(((c>>6)&63)|128);
utftext = utftext + Chr(((c And 63) Or 128))
'((c&63)|128);
End If
Next
Encode_UTF8 = utftext
End Function
Response.Write(Encode_UTF8(mystring))
%>
250 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2