AGB  ·  Datenschutz  ·  Impressum  







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

UTF-8 nach ASCII (die 1000ste)

Ein Thema von ernschd · begonnen am 21. Feb 2017 · letzter Beitrag vom 22. Feb 2017
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#21

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 21. Feb 2017, 21:33
Wäre es nicht eigentlich sinnvoll, wenn ein Encoding einen String entgegennimmt und ein byte-Array zurück gibt?
Wenn da wieder ein String rauskommt, ist das doch eigentlich wieder Interpretationssache, was da drin steht.

Also string + Zeichnsatz = Bytes
Und Bytes + Zeichensatz = String
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#22

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 21. Feb 2017, 23:32
Wäre es nicht eigentlich sinnvoll, wenn ein Encoding einen String entgegennimmt und ein byte-Array zurück gibt?
Wenn da wieder ein String rauskommt, ist das doch eigentlich wieder Interpretationssache, was da drin steht.


Es kommt darauf an welche Codierung die gewählte Schrift unterstützt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (21. Feb 2017 um 23:39 Uhr)
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#23

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 09:24
Um die ganzen Verwirrungen (hoffentlich) ein wenig aufzudecken:

Ich habe einen UTF-8 kodierten String, als Beispiel "BÜCHER". Dieser muss in einen DOS-Zeichensatz umgewandelt werden, damit ich für das große "Ü" in Codepage 437 das Hex Zeichen 9A bzw. (extendet) ASCII-Zeichen 154 bekomme.
Wenn man dieses in einem Editor als ANSI anzeigt, wird es als "š" dargestellt, in UTF-8 als "x9A".
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.797 Beiträge
 
Delphi 12 Athens
 
#24

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 09:58
Als ich das letzte mal nachgesehen hatte (vor 1 Minute) war das große Ü ASCII 220 bzw xDC... auch in der Codepage 437.
In UTF-8 ist das U+00DC oder eben c39c.
Kurz: Keine Deiner Zahlen entspricht in den benannten Codetabellen dem Ü.

Da läuft etwas konzeptionell falsch.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#25

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 10:16
Ich habe in der verlinkten Tabelle nachgesehen: https://de.wikipedia.org/wiki/Codepage_437, dort ist es 154 bzw. 9A. Laut der Beschreibung ist 00DC der Unicode-Wert.

Geändert von ernschd (22. Feb 2017 um 10:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.797 Beiträge
 
Delphi 12 Athens
 
#26

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 10:31
d'uh... hab die Tabelle falsch gelesen

Ich habe auch mal UTF8 nach ASCII konvertieren müssen, bei mir sahen die Strings aber so aus: 'Gl\xC7\, cknerin' -> 'Glöcknerin' Das kann man dann mit Delphi-Referenz durchsuchenTJSONOBject.ParseJSONValue verwurschteln...hilft Dir jetzt aber nicht.



Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#27

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 11:39
Ich habe in der verlinkten Tabelle nachgesehen: https://de.wikipedia.org/wiki/Codepage_437, dort ist es 154 bzw. 9A. Laut der Beschreibung ist 00DC der Unicode-Wert.
Um Mißverständnissen vorzubeugen, wichtig ist, was in der Datei steht, wenn es korrekt ist.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#28

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 11:46
Das habe ich in diesem Post bereits geschrieben.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#29

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 11:48
Delphi liefert doch alles mit:

Declariere einen Stringtyp für die gewünschte Codepage:

Delphi-Quellcode:

 type
    oemString = type Ansistring(437) ;

   function StringtoOem(const Value : string) : oemString;
 begin
     result := Value;
 end;
einfach zugewiesen und glücklich sein.

Ergebnis :

OEM
Decimal
66 154 67 72 69 82

HEX
$42 $9A $43 $48 $45 $52

ANSI
Decimal
66 220 67 72 69 82

HEX
$42 $DC $43 $48 $45 $52
Fritz Westermann
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#30

AW: UTF-8 nach ASCII (die 1000ste)

  Alt 22. Feb 2017, 12:15
Wenn ich das ganze mit einem kleinen Testprogramm versuche, bekomme ich leider ein anderes Ergebnis (Hexadezimal DC statt 9A):

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses System.SysUtils;

type oemString = type Ansistring(437) ;

var f: TextFile;
  ein: string;
  aus: oemString;

function StringtoOem(const Value : string) : oemString;
begin
    result := Value;
end;

begin
  AssignFile(f, 'c:\temp\kodier.txt');
  Rewrite(f);
  ein := 'Ü';
  aus := StringtoOem(ein);
  writeln(f, aus);
  CloseFile(f);
end.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 07:34 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