webForumDet fria alternativet

Hur spara som utf-8?

ASP

6 svar · 555 visningar · startad av Inferis

Medlem sedan sep. 2000667 inlägg
Frågan#1

Varför sparas filen inte som utf-8?

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.

Medlem sedan aug. 20039 340 inlägg
#2

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.

Medlem sedan sep. 2000667 inlägg
#3

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.

Medlem sedan sep. 2000667 inlägg
#4

Object doesn't support this property or method: 'objTextfil.CharSet'

Medlem sedan sep. 2000667 inlägg
#5

Den där länken fattade jag inte mycket av om jag ska vara ärlig.

Medlem sedan aug. 20039 340 inlägg
#6

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.

Medlem sedan sep. 2000667 inlägg
#7

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
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)