Avatar billede sortsnak.dk Nybegynder
22. februar 2006 - 20:31 Der er 16 kommentarer og
2 løsninger

Problemer med server.htmlEncode

Hej alle sammen.

Jeg har gemt æøå i min mySql-database i UTF-8 og det fungerer fint med at hente og skrive æøå til databasen. Problemet opstår når jeg bruger server.htmlencode på strengen. Da bliver æøå oversat til alt muligt mærkeligt!

Hvad er der galt? Håber I kan hjælpe...

- Anders
Avatar billede nielle Nybegynder
22. februar 2006 - 20:39 #1
De skulle da gerne blive oversat sådan som server.htmlencode() skal gøre det:

æ -> æ
ø -> ø
å -> å

?
Avatar billede sortsnak.dk Nybegynder
22. februar 2006 - 22:03 #2
hmm... jeg har fundet ud af at det virker når jeg redigerer i asp-siden og gemmer. Men kun første gang siden loades. Derefter bliver æøå til underlige tegn... æøå bliver til et kinesisk tegn (selvom der står æøå i source-koden)... Det går helt amok!

Det virker også hvis jeg lukker browseren og loader siden igen... det lyder lidt som et encoding-problem!? :S

Hjælp mig!! :)
Avatar billede nielle Nybegynder
22. februar 2006 - 22:07 #3
Hvis du bruger server.htmlencode() på din tekst før at du lægger den i databasen, så burde du ikke få encoding-problemer.
Avatar billede fennec Nybegynder
23. februar 2006 - 08:30 #4
Kan det være fordi ASP ikke kører i utf-8??
Response.Charset="UTF-8"
Avatar billede fennec Nybegynder
23. februar 2006 - 08:31 #5
Evt også:
Session.CodePage = 65001
Avatar billede fennec Nybegynder
23. februar 2006 - 08:32 #6
Hvis encodingen er lavet rigtigt, burde det slet ikke nøsvendigt at sende æøå igennem htmlencode, da den kan vise dem direket.
Avatar billede sortsnak.dk Nybegynder
23. februar 2006 - 11:47 #7
Hmm... problemet er at brugeren skal kunne skrive fx. <div> (og så nogle kinesiske tegn) </div> hvor jeg så gerne vil have den til at gemme de kinesiske tegn med deres rette html-entities men bevare selve "html'en"..... hvilket jeg nu synes lyder umuligt! :(
Avatar billede nielle Nybegynder
23. februar 2006 - 12:01 #8
Server.htmlEncode skal bl.a. over sætte "<" og ">" til "&lt;" og "&gt;" så det er måske ikke het det rette værktøj til opgaven.
Avatar billede sortsnak.dk Nybegynder
23. februar 2006 - 12:20 #9
Hmm... Jeg har vist fået det til at virke nu. :) Jeg har lavet følgende funktion som jeg kører på input til databasen ved indsættelse... Så bliver kinesiske tegn (og æøå) også oversat til deres rigtige html-entity uden at html'en bliver berørt.

Function UTF8Encode(pContent)

    pContent = replace( pContent, "&amp;", "---ampaaa---")
    pContent = replace( pContent, "&nbsp;", "---nbspaaa---")
    pContent = server.htmlEncode(pContent )
    pContent = replace( pContent, "&lt;", "<")
    pContent = replace( pContent, "&gt;", ">")
    pContent = replace( pContent, "&quot;", """")
    pContent = replace( pContent, "'", "&#39;")
    pContent = replace( pContent, "---nbspaaa---", "&nbsp;")
    pContent = replace( pContent, "---ampaaa---", "&amp;")

    UTF8Encode = pContent

End function

Tak for jeres kommentarer nielle og fennec. Kan man evt. dele pointene? :)
Avatar billede fennec Nybegynder
23. februar 2006 - 12:27 #10
Vi skal bare lave et svar begge to, så kan du dele point mellem os :o)

Jeg vil igen poientere, at hvis databasen, ASP og HTML er utf-8, så burde det slet ikke være nødvendigt at sende det igennem htmlEncode()

.o) <-- One Eyed Jack
Avatar billede sortsnak.dk Nybegynder
23. februar 2006 - 12:52 #11
Problemet er at jeg ikke kan få databasen til at være utf-8, så er nødsaget til at lave tegnene om til html-entities. :)

Se http://www.eksperten.dk/spm/688995
Avatar billede fennec Nybegynder
23. februar 2006 - 13:17 #12
Efter hvad du skriver i det andet ?, så skulle den være utf-8, men problemet kan være at din hjemmeside ikke er utf-8, og derfor sender informationerne som "latin1" eller hvad det nu er. Det er derfor vigtigt at alt er i utf-8 ellers opstår problemet alligevel :o)
Avatar billede sortsnak.dk Nybegynder
23. februar 2006 - 13:48 #13
Jeg bruger response.charset = "utf-8" i ASP og <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> i HTML.

Hvad mere kan der gøres hvis det åbenbart stadig ikke er nok??? :S
Avatar billede fennec Nybegynder
23. februar 2006 - 14:04 #14
det skulle lige være:
Session.CodePage = 65001

Jeg mener dog at kunne huske et eller andet med en bug i IIS angående charset, som den ikke registrere fra ASP dokumenterne, så den bruger sin default (et eller andet windows-charset). Det er det eneste jeg ellers kan se der kan fejle...

Så har du adgang til IIS'en, så prøv at kikke metabase.xml filen igennem.
Avatar billede nielle Nybegynder
23. februar 2006 - 21:55 #15
Giv du bare de fleste point til fennec :^)
Avatar billede sortsnak.dk Nybegynder
23. februar 2006 - 23:27 #16
Session.CodePage does the trick! ;) Mange tak!!!  :)
Avatar billede fennec Nybegynder
24. februar 2006 - 08:09 #17
Tak for point
.o) <-- One Eyed Jack
Avatar billede nielle Nybegynder
24. februar 2006 - 17:25 #18
Takker for point :^)
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