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 1 von 2  1 2      
ernschd

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

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

  Alt 21. Feb 2017, 15:24
Kann mir denn sonst jemand einen Tipp geben, wie ich OEM2Ascii umsetzen kann?
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.513 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 21. Feb 2017, 15:45
Was denn nun? OEM2Ascii oder UTF-8 nach ASCII.
Und wie willst Du das Wort "Bücher" denn in ASCII haben?
  Mit Zitat antworten Zitat
ernschd

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

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

  Alt 21. Feb 2017, 16:18
UTF-8 nach ASCII, (BÜCHER -> BšCHER).
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

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

  Alt 21. Feb 2017, 16:23
Was denn nun? OEM2Ascii oder UTF-8 nach ASCII.
Und wie willst Du das Wort "Bücher" denn in ASCII haben?
Wenn ich das richtig verstanden habe, dann hat er Daten die UTF-8 kodiert sind, und die will er in Dateien schreiben die OEM(ASCII) codiert sind. (sein sollen)
Letztlich benötigt er so etwas
Delphi-Quellcode:
OEMstring:=(UTF8toOEM(UTF8String);
bzw.
OEMString:=ANSItoOEM(UTF8toAnsi(UTF8String));
Da der Zeichenumpfang von UTF8 wesentlich größer ist als der von Ansi/OEM/ASCII, zusätzlich gibt es natürlich noch unterschiedliche Codepages für ANSI/ASCII/OEM, ist das erst einmal eine ganz heiße Nummer.
Da sollte/muß man im Vorfeld definieren was von dem was vorne hinein geht, auch hinten wieder heraus darf.

Gruß
K-H

xC3BC (UTF8) -> xFC (Ansi) -> x81(IBM ASCII)
ich vermute, das ist was Du willst.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (21. Feb 2017 um 16:35 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.513 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 21. Feb 2017, 16:32
Also ANSI/ASCII/OEM sind schon mal drei Paar Stiefel. Und was "š" sein soll ist mir noch unklar. Wenn ich es in Ultraedit kopiere zeigt das Hex den Wert #$9A an. Das ist aber kein ASCII.

ANSI: https://de.wikipedia.org/wiki/Americ...ards_Institute
ASCII: https://de.wikipedia.org/wiki/Americ...on_Interchange
OEM: https://de.wikipedia.org/wiki/Codepage_437
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

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

  Alt 21. Feb 2017, 16:54
Verstehe ich das richtig?

Du hast aus 'ner SQLite-Datenbank UTF8.

Ausgeben möchtest Du per WriteLn ... OEM: https://de.wikipedia.org/wiki/Codepage_437

Also den unter DOS üblichen Zeichensatz?

Das wäre dann sowas in der Art:
Delphi-Quellcode:
function Ansi2OEM(AnsiString: string): string;
begin
  ANSIString := ANSIString + #0;
  CharToOEM(PChar(ANSIString), @ANSIString[1]);
  Delete(ANSIString, Length(ANSIString), 1);
  Result := ANSIString;
end;

function GetFieldByName(const FieldName: string): String;
var s: String;
begin
  s := Utf8ToAnsi(GetFields(self.GetFieldIndex(FieldName)));
  if FIsAscii then s := Ansi2OEM(s);
  Result := s;
end;
CharToOEM war zu Delphi 7-Zeiten in der Unit Windows zu finden.

ASCII https://de.wikipedia.org/wiki/Americ...on_Interchange ist aber (wie freimatz schon schrieb) <> OEM: https://de.wikipedia.org/wiki/Americ...on_Interchange

Da bei mehreren Post wiederholt Fragen auftraten, was genau das Ziel ist, beschreibe bitte noch einmal genau, von welchen Ausgangsdaten Du zu welchen Zieldaten gelangen möchtest.

Was ist genau das Quellsystem und was ist das Zielsystem? (Damit wir eine Vorstellung davon bekommen können, welche Ausgabe genau erforderlich ist.)

Was ergibt die Ausgabe von Ord('š') ?
154 bzw. hexadezimal 9A? Das wäre dann aber in der Codepage 437 das große Ü. Das kleine ü wäre 129 bzw. hexadezimal 81.

Man müsste dann mal schauen, welcher Zeichensatz an der entsprechenden Stelle das kleine ü enthält.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
988 Beiträge
 
Delphi 6 Professional
 
#7

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

  Alt 21. Feb 2017, 18:17
Hmm..

Irgendwo in den alten Sourcen gefunden:

Delphi-Quellcode:
function ANSI2ASCII(AText : AnsiString) : AnsiString;
var
  PText : PAnsiChar;
begin
  PText:=StrAlloc(length(AText)+1);
  StrPCopy(PText,AText);
  CharToOEMA(PText,PText);
  Result:=StrPas(PText);
  StrDispose(PText);
end;
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

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

  Alt 21. Feb 2017, 20: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
 
#9

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

  Alt 21. Feb 2017, 22: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 22:39 Uhr)
  Mit Zitat antworten Zitat
ernschd

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

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

  Alt 22. Feb 2017, 08: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
Antwort Antwort
Seite 1 von 2  1 2      


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 00:27 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