Avatar billede fredz Nybegynder
22. oktober 2006 - 20:32 Der er 6 kommentarer og
1 løsning

ASCII til UNICODE - konvertering i VS2005

Nedenstående kode får desværre VS2005 til at udskrive ascii tegn. Indholdet af strmContents bliver f.eks. til 7297108108111, når klienten sender teksten "Hallo" til Page_Load (den sender i plain text). Er der nogen, der kender en simpel måde at moderere koden nedenfor, så jeg får udskrevet teksten som bogstaver i Unicode, der vist er standard i VS2005? Der findes måske en indbygget metode til den slags?

  protected void Page_Load(object sender, EventArgs e)
  {
        if (!IsPostBack)
        {
            System.IO.Stream str; String strmContents;
            Int32 counter, strLen, strRead;

            // Create a Stream object.
            str = Request.InputStream;

            // Find number of bytes in stream.
            strLen = Convert.ToInt32(str.Length);

            // Create a byte array.
            byte[] strArr = new byte[strLen];

            // Read stream into byte array.
            strRead = str.Read(strArr, 0, strLen);

            // Convert byte array to a text string.
            strmContents = "";
            for (counter = 0; counter < strLen; counter++)
            {
              strmContents = strmContents + strArr[counter].ToString();
            }...osv
Avatar billede arne_v Ekspert
22. oktober 2006 - 20:59 #1
StreamReader sr = new StreamReader(Request.InputStream);
strmContents = sr.ReadLine();

vil jeg tro gør det som al din kode ikke gør
Avatar billede fredz Nybegynder
22. oktober 2006 - 21:19 #2
Det virker sørme! Tak for det, Arne.

Mon man kan forvente at strengen strmContents automatisk gør den indkomne plain ascii tekst til Unicode? - dvs uden nogen særlig konvertering forinden. Det har jeg brug for at vide, af hensyn til den type, der kræves, der hvor teksten ender (i en sql-server).
Avatar billede arne_v Ekspert
22. oktober 2006 - 21:21 #3
hvis der er ÆØÅ eller andre special tegn skal du bruge

StreamReader sr = new StreamReader(Request.InputStream, Encoding.Default);

eller

StreamReader sr = new StreamReader(Request.InputStream, Encoding.UTF8);
Avatar billede fredz Nybegynder
22. oktober 2006 - 21:41 #4
Det var nu ikke Æ,Ø,Å, men selve formatet jeg tænkte på. Men jeg prøver dit forslag.

- forresten: jeg skrev dit kodeforslag med StreamReader virkede. Det gør det også, men når der kommer en ny og anderledes tekst ind i Page_Load, udskriver strmContents stadig "Hallo", og sådan bliver det ved. Er der noget der skal lukkes eller nulstilles? Det hjælper ikke at tilføje Close eller Dispose....
Avatar billede fredz Nybegynder
22. oktober 2006 - 22:03 #5
Hov! min forresten-kommentar var vist lidt for hurtig. Jeg havde bare lavet en lille forglemmelse i klienten. Koden virker som den skal. Tak igen.
Avatar billede arne_v Ekspert
22. oktober 2006 - 22:43 #6
jeg ligger et svar så
Avatar billede fredz Nybegynder
22. oktober 2006 - 23:52 #7
Tak for 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