Avatar billede montago Praktikant
18. oktober 2007 - 12:52 Der er 6 kommentarer og
1 løsning

Charset : ASP "UTF-8" ikke det samme som ASPX UTF-8

jeg har lavet 2 ASP test sider for at kunne få forskellige charset til at virke...

via Notepad har jeg:
Gemt den ene med UTF-8 og laver Response.Charset = "UTF-8"
Gemt den anden i ANSI

begge sider har hhv.
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
og
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

min ASPX side henter via WebRequest disse 2 sider og viser dem som ISO-8859-1 (Encoding.Default)

de 2 sider indeholder følgende:
--------------------------------------------------------------
    <table>
    <%
    For A=0 to 255 step 1
        Response.Write "<tr><td>" & A & "</td><td>%" & hex(A) & "</td><td>" &_
            chr(A) & "</td><td>" & server.htmlencode(chr(A)) & "</td></tr>"
    Next
    %>
    </table>
--------------------------------------------------------------

for at se om alle tegn kommer igennem...

på min ASPX side var jeg nødt til at gøre følgende for at iso-8859-1 siden blev vist korrekt:

Encoding enc = Encoding.Default;
if (objWebResponse.CharacterSet.ToLower().Equals("iso-8859-1"))
    enc = Encoding.Default;
else
    enc = Encoding.GetEncoding(objWebResponse.CharacterSet);
StreamReader objStreamReader = new StreamReader(objStream, enc);


idet iso-8859-1 åbenbart ikke genkendes korrekt af GetEncoding :( ???


okay !! - så langt så godt !

nu er mit problem så at UTF-8 siden, kun viser Tegn 1 til 127 og resten er '?' Hvilket jeg ikke fatter en bjælle af - det samme er tilfældet hvis jeg åbner siden direkte i Explorer

Hvad er det jeg har misforstået ? :(
Avatar billede montago Praktikant
18. oktober 2007 - 13:12 #1
denne side viser min UTF-8 test: http://mdk2002.dyndnd.org/gadget2

denne side viser min iso-8859-1 test: http://mdk2002.dyndnd.org/gadget
Avatar billede montago Praktikant
18. oktober 2007 - 13:38 #2
*rettelse af links:

denne side viser min UTF-8 test: http://mdk2002.dyndns.org/gadget2

denne side viser min iso-8859-1 test: http://mdk2002.dyndns.org/gadget
Avatar billede arne_v Ekspert
21. oktober 2007 - 23:49 #3
Det er nu meget logisk.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

fortæller browseren at filen er i UTF-8

hvis du har skrevet noget hardcoded tekst i filen virkedr det fordi du gemmer i UTF-8

men chr(A) producerer altså stadig ISO-8859-1

ASP.NET har ikke problemet fordi den kører alt internet i unicode/UTF-16 og så konverteres
der til UTF-8 eller ISO-8859-1 når det sende ud til browser
Avatar billede montago Praktikant
22. oktober 2007 - 08:08 #4
ahhh okay - giver mening !

men er det så også rigtigt gjort af mig, når jeg på min ASPX portal gør følgende:

1. gemmer webresponse.charset i hver gadget
2. læser webresponse streamen med dette charset
3. konvertere querystring/post-body med charsettet når jeg laver næste webrequest

jeg gør dette for at portalen skal være "transperent" - men tilsyneladende giver dette nogle fejl med Encoding.Default / Encoding.GetEncoding("iso-8859-1")

nogen tips herom ?
Avatar billede montago Praktikant
24. oktober 2007 - 12:36 #5
F*ck noget lort... har fundet ud af dét !!

Internet Explorer 6 er (FULDSTENDIG) ligeglad med <meta - charset> og <form accept-charset> , det eneste IE kigger på når den skal definere charsettet er headeren's content-type !!

Firefox derimod kan godt finde ud af meta og form-accept

dvs

/* HTTP-HEADER */
Content-Type: text/html; charset=UTF-8
/* ------------*/
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
  <form accept-charset="iso-8859-1">

//----------------

vil levere UTF-8 Querystring i IE6, og Latin-1 (iso-8859-1) i Firefox 2.0
Avatar billede pidgeot Nybegynder
24. oktober 2007 - 12:43 #6
IE kigger på meta hvis der ikke er andre oplysninger i headeren - hvilket i øvrigt også er korrekt jf. HTML 4.01-standarden, sektion 5.2.2 (og tvivler på den har ændret sig til XHTML).

accept-charset skal jeg ikke kunne udtale mig om, men vil mene det er bedre at håndtere den slags server-side.
Avatar billede montago Praktikant
24. oktober 2007 - 12:56 #7
Gad vide om der er forskel på om jeg køre Doctype Transitional eller Strict ?

min test viser at IE6 kun kigger på headeren, og discard'er ALT i selve HTML'en

accep-charset er godkendt på forms, til at encode querystring... fx hvis man poster FRA en UTF-8 TIL en ekstern iso-8859-1 side...
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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