Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Konvertiere ü zu ü - gibt es da was? (https://www.delphipraxis.net/190431-konvertiere-%E3%BC-zu-ue-gibt-es-da.html)

taaktaak 3. Okt 2016 19:15

Konvertiere ü zu ü - gibt es da was?
 
Moin, Moin.
Ich erhalte von einer anderen (alten) Anwendung Strings, die z.B. das in der Überschrift angeführte ü enthalten können (oder ö, oder ...). Die Strings möchte ich in meiner (Delphi7-)Anwendung natürlich möglichst korrekt anzeigen. Da das Grundthema mir bisher völlig fremd geblieben ist, helfe ich mit derzeit sehr stümperhaft mit einer Reihe von StringReplace() um z.B. ö in ö umzuwandeln.
Gibt es für Delphi7 auch eine fachmännische Lösung?

mkinzler 3. Okt 2016 19:22

AW: Konvertiere ü zu ü - gibt es da was?
 
Unicode-Komponenten

http://www.delphipraxis.net/175267-d...ig-machen.html

nahpets 3. Okt 2016 20:14

AW: Konvertiere ü zu ü - gibt es da was?
 
Oder
Delphi-Quellcode:
UTF8ToAnsi('ö');
wenn es denn tatsächlich UTF 8 sein sollte, was ich bei einer alten Anwendung bezweifle.

Alte Anwendungen könnten aber auch noch den OEM-Zeichensatz nutzen, dann wäre aber wohl eher sowas angesagt:
Delphi-Quellcode:
function OemToAnsi(const S: string): string;
begin
  SetLength(Result, Length(S));
  if S <> '' then OemToAnsiBuff(@S[1], @Result[1], Length(S));
end;

function AnsiToOem(const S: string): string;
begin
  SetLength(Result, Length(S));
  if S <> '' then AnsiToOemBuff(@S[1], @Result[1], Length(S));
end;

himitsu 3. Okt 2016 21:16

AW: Konvertiere ü zu ü - gibt es da was?
 
OEM ist och nur 'nen Single-Char-Zeichensatz und hier hat das ö zwei Zeichen, die stark nach UTF-8 ausshen ... Umlaute fangen da fast immer mit à an.

Sieht eher nach UTF-8 aus.

Uwe Raabe 3. Okt 2016 21:24

AW: Konvertiere ü zu ü - gibt es da was?
 
Es handelt sich bei der Sequenz ü tatsächlich um die ANSI-Darstellung einer UTF-8 Sequenz für das kleine ü.

ü entspricht Hex C3 BC oder binär 1100 0011 1011 1100. Die 110 leiten eine 2-Byte UTF-8 Sequenz ein, deren zweites Byte mit 10 beginnt. Die restlichen Bits verbleiben mit 00011 11 1100, was auf Bytes formatiert 00 1111 1100 oder Hex FC entspricht, also dem kleinen ü im Windows Zeichensatz 1252.

Mit
Delphi-Quellcode:
UTF8ToAnsi
solltest du bei Delphi 7 also auf dem richtigen Weg liegen.

taaktaak 4. Okt 2016 05:30

AW: Konvertiere ü zu ü - gibt es da was?
 
Moin, Moin.
Mit UTF8ToAnsi() werden alle bisher vorliegenden "Sonderfälle" korrekt umgewandelt; damit habe ich die erhoffte schnelle und unkomplizierte Lösung und kann mich wieder den mir wesentlichen Dingen zuwenden.
Vielen Dank für die Antworten.
:P


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 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