AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TEncoding.ASCII.GetBytes liefert falsches Resultat
Thema durchsuchen
Ansicht
Themen-Optionen

TEncoding.ASCII.GetBytes liefert falsches Resultat

Ein Thema von chaosben · begonnen am 25. Apr 2010 · letzter Beitrag vom 25. Apr 2010
Antwort Antwort
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#1

TEncoding.ASCII.GetBytes liefert falsches Resultat

  Alt 25. Apr 2010, 17:13
... jedenfalls denk ich das.
Wenn ich das machenTEncoding.ASCII.GetBytes('ö')[0] kommt 111 heraus. Das wiederum ist ein kleines o. Erhofft habe ich mir aber den Wert 246 - also ein kleines ö. Was mache ich falsch?

Der Hintergrund der Sache ist dieser: Ich nutze TidURI von Indy10 (aus dem SVN) um eine URL zu kodieren. Dummerweise wird dabei aus "Görlitz" "G%6Frlitz" und nicht "G%F6rlitz". Aufrufen tu ich es so: TIdURI.URLEncode('http://blabla?account=' + account + '&password=' + pwd, TEncoding.ASCII)
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: TEncoding.ASCII.GetBytes liefert falsches Resultat

  Alt 25. Apr 2010, 17:36
Hi,

vorweg muss ich leider sagen dass ich keine Ahnung von TEncoding oder irgendwas der gleichen habe. Was ich dir aber sagen kann, ist, dass ASCII eine 7-Bit Zeichenkodierung ist. In 7 Bit passen bekanntlich 128 verschiedene Zahlen - und da liegt 246 für das kleine ö offensichtlich drüber. Was du brauchst ist also wahrscheinlich ein anderes Encoding, zumindest wenn sich dieses "TEncoding" an die Standards hält.

Hope it helps!

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: TEncoding.ASCII.GetBytes liefert falsches Resultat

  Alt 25. Apr 2010, 17:55
Das Encoding für die aktuelle Code Page ist TEncoding.Default.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#4

Re: TEncoding.ASCII.GetBytes liefert falsches Resultat

  Alt 25. Apr 2010, 18:04
TEncoding.Unicode liefert dir das richtige Ergebniss
Lars
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: TEncoding.ASCII.GetBytes liefert falsches Resultat

  Alt 25. Apr 2010, 18:09
Zitat von daywalker9:
TEncoding.Unicode liefert dir das richtige Ergebniss
Dafür braucht er aber kein TEncoding, denn das 'ö' ist ja schon Unicode.

Also hör auf Khabarakh
und dieses ASCII hat nur 7 Bit, womit es da kein ö gibt.

TEncoding.Default.GetBytes('ö')[0]
Delphi-Quellcode:
Var E: TEncoding;
  B: TBytes;
  A: AnsiChar;

Begin
  E := TMBCSEncoding.Create(28591); // ISO 8859-1 Latin 1; Western European (ISO)
  B := E.GetBytes('ö');
  E.Free;
  A := AnsiChar(B[0]);
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#6

Re: TEncoding.ASCII.GetBytes liefert falsches Resultat

  Alt 25. Apr 2010, 19:45
Ei wunderbar ... danke schön!
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz