AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UTF(Encode codiert nicht richtig

Ein Thema von Codehunter · begonnen am 5. Jun 2014 · letzter Beitrag vom 10. Jun 2014
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

UTF(Encode codiert nicht richtig

  Alt 5. Jun 2014, 15:20
Delphi-Version: XE4
Hi!

Scheinbar codiert UTF8Encode bei XE4 nicht richtig. Hier erstmal mein Code (die kyrillischen Zeichen sind zufäälig gewählt):
Delphi-Quellcode:
var
  S: RawByteString;
  SU: UnicodeString;
begin
  SU:= 'апрвулв';
  S:= UTF8Encode(SU);
  SetCodePage(S, 0, FALSE);
  SU:= S;
Dabei kommt der folgende UTF8-String heraus:
Code:
апÑ?вÑ?лв
Wenn ich den rein testweise mal durch dieses Tool konvertieren lasse, sieht man dass zwar einige aber eben nicht alle Zeichen richtig decodiert werden können. Ein Bug auf der verlinkten Seite ist es nicht, da kann man jeden anderen Decoder mit dem selben Ergebnis testen.

Wo liegt da jetzt der Fehler?

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: UTF(Encode codiert nicht richtig

  Alt 5. Jun 2014, 15:44
Code:
апÑ?вÑ?лв  < dein Programm/Post
апрвулв    < die Webseite
[edit]
vor dem Posten, waren die Zeichen € und ƒ noch nicht sichtbar und wurden erst durch die DP dahingehend umgewandelt.
Also k.A. welche Zeichen das jetzt wirklich sind.
unbenannt.png
[/edit]

? = vermutlich kann das Zeichen nicht für die Anzeige umcodiert werden, drum macht Delphi da ein "?" draus, während die Webseite das Zeichen einfach weglässt.

Zitat:
Delphi-Quellcode:
//SetCodePage(S, 0, FALSE);
SetCodePage(S, CP_ACP, FALSE);
Du sagst dort das sei ANSI und bei Zuweisung an den Unicodestring wird das von ANSI in Unicode umcodiert, was dir natürlich den UTF-8-Code zerschrottet.

Wenn auf der Webseite nun auch wieder von Unicode in die selbe ANSI-Codepage umcodiert würde, dann könnte es allerdings passen.

An dem ¿ und » hättes man eigentlich erkennen können, daß es sich hierbei nicht mehr um die Zeichencodes, im Unicodebereich von 0 bis 255 handelt.
SetCodePage(S, $FFFF, FALSE); // $ffff=Raw Aber es kommt halt auch noch darauf an, ob und welche Umcodierung dein Webbrowser und deren En-/Decoding-Funktion besitzt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Jun 2014 um 15:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: UTF(Encode codiert nicht richtig

  Alt 10. Jun 2014, 13:01
Manchmal wünschte ich, seit Konrad Zuse wären alle Rechner immer mit Unicode gelaufen. Dann wär nie einer auf die Idee gekommen, so ein Binärchaos zu veranstalten

In meinem Fall war die Ursache allen Ärgers was ganz Banales: Eine Komponente war von mir in der IDE auf einen UTF8-Header eingestellt, hat aber irgendwo auf dem Weg zur Textausgabe den Header einfach auf einen Leerstring gestellt. Folglich bekam der Client vom Server eine Antwort die nicht explizit als UTF8 gekennzeichnet war und fiel sicherheitshalber auf ANSI zurück
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  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 04:21 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