24. juli 2002 - 09:21Der 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 ?
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.
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.
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. :-)
Synes godt om
Ny brugerNybegynder
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.