![]() |
TEncoding.ASCII.GetBytes liefert falsches Resultat
... jedenfalls denk ich das.
Wenn ich das machen
Delphi-Quellcode:
kommt 111 heraus. Das wiederum ist ein kleines o. Erhofft habe ich mir aber den Wert 246 - also ein kleines ö. Was mache ich falsch?
TEncoding.ASCII.GetBytes('ö')[0]
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:
Delphi-Quellcode:
TIdURI.URLEncode('http://blabla?account=' + account + '&password=' + pwd, TEncoding.ASCII)
|
Re: TEncoding.ASCII.GetBytes liefert falsches Resultat
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 ![]() Hope it helps! :) Liebe Grüße, Valle |
Re: TEncoding.ASCII.GetBytes liefert falsches Resultat
Das Encoding für die aktuelle Code Page ist TEncoding.Default.
|
Re: TEncoding.ASCII.GetBytes liefert falsches Resultat
TEncoding.Unicode liefert dir das richtige Ergebniss
|
Re: TEncoding.ASCII.GetBytes liefert falsches Resultat
Zitat:
Also hör auf Khabarakh und dieses ASCII hat nur 7 Bit, womit es da kein ö gibt.
Delphi-Quellcode:
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]); |
Re: TEncoding.ASCII.GetBytes liefert falsches Resultat
Ei wunderbar ... danke schön! :dp:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz