AGB  ·  Datenschutz  ·  Impressum  







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

Unicode über Pipe in Delphi empfangen

Ein Thema von nobby · begonnen am 17. Apr 2011 · letzter Beitrag vom 18. Apr 2011
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Unicode über Pipe in Delphi empfangen

  Alt 17. Apr 2011, 15:04
ReadLn und WriteLn sind nunmal NUR Ansi, egal ob zur Console oder zu einer Datei.
Die WideString-Parameter werden dabei intern nach Ansi umgewandelt.

Wenn das mit Char/WideChar geht, warum willst du es dann mit einem AnsiChar-Puffer versuchen?
Wobei du doch weist, daß WideChar/Uniocode ankommt, also sollte man da auch WideChar und nicht Char verwenden.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
nobby

Registriert seit: 1. Sep 2004
12 Beiträge
 
#2

AW: Unicode über Pipe in Delphi empfangen

  Alt 17. Apr 2011, 15:28
Das mit WriteLn war ja auch nur ein Test, um das Problem einzugrenzen. AnsiChar habe ich nur verwendet, um die einzelnen Doppel-Bytes, die empfangen werden, zu analysieren. Wenn ich char/WideChar buffer verwende, empfange ich

"獕湩⁧捷畯㩴퀠킚톸킀킸킻톸킆₰ꣃ꧃룃黃뷇믐駑ꏎꛃ跄ൡ"

anstatt wie gesendet (und erwartet):

"Using wcout: Кирилица èéøÞǽлљΣæča"

Die Anzahl der Zeichen stimmt, aber die Interpretierung (Code Page?) nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Unicode über Pipe in Delphi empfangen

  Alt 17. Apr 2011, 16:05
Ahh, jetzt hab ich's verstanden.

Also, so wie es aussieht, sendet dein C-Programm garnicht in Unicode.
> Sonst müßten beim ANSI, zwischen den lateinischen Buchstaben, jeweils eine #0 stehen.

Könnte UTF-8 sein.

Wie sieht/sähe denn dein Code aus, um Ansi zu empfangen?
> den entweder so umstellen, daß es in einen AnsiString geht und dann via UTF8Decode nach Unicode umwandeln oder den Text direkt in einen UTF8String rein.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Apr 2011 um 16:07 Uhr)
  Mit Zitat antworten Zitat
nobby

Registriert seit: 1. Sep 2004
12 Beiträge
 
#4

AW: Unicode über Pipe in Delphi empfangen

  Alt 17. Apr 2011, 16:24
Doch das C-Programm sendet den Unicode string:

"Using wcout: Кирилица èéøÞǽлљΣæča"

Das hat keine Bedeutung sondern soll nur die korrekte Darstellung überprüfen.

Die Pipe (gefüllt vom C-Programm) wird gelesen mit:

ReadFile(rPipe, buff, BUFFLEN, read, nil);

Ich habe probiert:

buff: array [0..BUFFLEN] of AnsiChar; //ANSI

und

buff: array [0..BUFFLEN] of Char; //Unicode

Mit der ersten Version kann ich die einzelnen Bytes überprüfen. Die < 128 stimmen, aber die > 128 liegen im falschen Unicode-Bereich.
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Unicode über Pipe in Delphi empfangen

  Alt 18. Apr 2011, 07:21
Kann man die Pipe mittels eines TStringStream auslesen? Die Konvertierung müsste dann klappen.
  Mit Zitat antworten Zitat
nobby

Registriert seit: 1. Sep 2004
12 Beiträge
 
#6

AW: Unicode über Pipe in Delphi empfangen

  Alt 18. Apr 2011, 07:37
Guten Morgen

Der empfangene Byte-Buffer ist definitiv UTF-8 kodiert.
Mit BabelMap analysiert: http://www.babelstone.co.uk/Software/BabelMap.html

Ich habs nun so hingekriegt:

buff: array [0..BUFFLEN] of AnsiChar;
rawb: AnsiString;
cons: string; //Unicode
...
ReadFile(rPipe, buff, BUFFLEN, read, nil); //pipe immer als stream of byte auslesen
...
rawb := AnsiString(buff); //byte buffer -> raw byte string (UTF-8)
cons := Utf8Decode(rawb); //raw byte string (UTF-8) -> Unicode
...
DispConsole(cons);

Danke euch allen,
Nobby
  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 03:04 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