Avatar billede torbenrohde Nybegynder
24. juli 2002 - 09:21 Der er 7 kommentarer og
1 løsning

Unicode - UTF-8 <form>, ASP, ADO og SQL Server nvarchar

Jeg laver en side med en form der har attributten accept-charset="utf-8". Den submitter så til en ASP side der sætter Session.Codepage til 65001. Det virker også fint, og hvis jeg HTMLEncoder det og skriver det ud på skærmen ser det fint ud, både med åøæ og japanske tegn.
Jeg har så en SQL Server nvarchar attribut som jeg gerne vil skrive værdien ned i, men alle "ikke-ascii" tegn bliver bare til spørgsmåltegn (?).
Jeg gemmer på følgende måde (et fiktivt eksempel)
  myDbConnObj.Execute("UPDATE biler SET tekst = '" & Request.Form("bil") & "'")

Jeg går ud fra at det er fordi ASP arbejder med 8 bit tegn og at UTF-8 tegnende i Request.Form derfor mister mening når jeg sætter dem ind i strengen.
Hvordan kan jeg sende få konverteret UTF-8 strengen til unicode og sendt dem over til SQL Server ? Eller skal jeg gribe det an på en helt anden måde ?
Avatar billede soes Nybegynder
24. juli 2002 - 12:23 #1
nu har jeg aldrig prøvet det som du nævner med at ændre på accept-charset, men jeg fandt denne dokumentation:

Returns an expression that has been converted to a Variant of subtype String.

CStr(expression)
The expression argument is any valid expression.

Remarks
In general, you can document your code using the data type conversion functions to show that the result of some operation should be expressed as a particular data type rather than the default data type. For example, use CStr to force the result to be expressed as a String.

You should use the CStr function instead of Str to provide internationally aware conversions from any other data type to a String subtype. For example, different decimal separators are properly recognized depending on the locale setting of your system.

The data in expression determines what is returned according to the following table:

If expression is CStr returns
Boolean A String containing True or False. 
Date A String containing a date in the short-date format of your system.
Null A run-time error.
Empty A zero-length String ("").
Error A String containing the word Error followed by the error number.
Other numeric A String containing the number.

Jeg ved ikke om du kan burge funktionen Cstr(), men du kan da prøve.

/Søren Søndergård
Avatar billede coltau Juniormester
24. juli 2002 - 14:50 #2
For mig ser det ud som om du forsøger at lave en SQL-sætning der indeholder unicode. Det tror jeg ikke man kan. ?

Hvis nvarchar er en felttype der kan indeholde unicode kan du måske åbne et opdaterbar recordset og gøre følgende:

RS("tekst") = Request.Form("bil")

- men jeg tvivler.

der er selvfølgelig også den mulighed at du kan gemme teksten som HTMLEncoded sådan:

myDbConnObj.Execute("UPDATE biler SET tekst = '" & HTMLEncode(Request.Form("bil")) & "'")

- men så kan udtrækket jo ikke anvendes til andet end at vise på skærmen.
Avatar billede torbenrohde Nybegynder
24. juli 2002 - 15:52 #3
Jeg prøver lige

RS("tekst") = Request.Form("bil")
Avatar billede torbenrohde Nybegynder
24. juli 2002 - 15:54 #4
soes -> CStr er stadig bare en 8 bit streng. De funktion (fx CStr, CInt osv.) er bare til fordi VBScript har et forskruet/ikke-eksisterende datatype begreb.
Avatar billede soes Nybegynder
24. juli 2002 - 16:06 #5
ok - tak for det, så ved jeg det til en anden gang. Håber ikke at det har været alt for misvisende :o)

Hvad er grunden til at du ønsker at have det UTF-8 ? Hvad er fordelen/formålet med det?

/Søren Søndergård
Avatar billede torbenrohde Nybegynder
24. juli 2002 - 16:11 #6
Ja da, selvfølgelig, det virker . Tak coltau.
Avatar billede torbenrohde Nybegynder
24. juli 2002 - 16:12 #7
Og det var uden HTMLEncode....
Avatar billede coltau Juniormester
25. juli 2002 - 14:50 #8
Jamen så er håndtering af unicode jo delvis indbygget i ASP/ADO

ASP har iøvrigt også funktionen AscW som udtrækker et tegn fra en unicode-tekst.

Jeg havde allerede haft den i tankerne for at gemme det i et binært format i databasen (BLOB-felt) - men det var da godt jeg ikke gik videre med det. :-)
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