VB 16-Bit unter chinesischem Windows XP: Gradzeichen mutiert zu chinesichem Zeichen

31/01/2010 - 15:55 von Martin Eckel | Report spam
Hallo,

ich habe hier ein Programm, welches noch unter VB3 geschrieben ist -
also noch 16-bit.

An einigen Stellen wird "°C" sowohl auf dem Bildschirm ausgegeben, wie
auch ausgedruckt.

Das funktioniert mit deutschem Windows auch, aber unter chinesischem
Windows XP (und wenn ich mich recht erinnere, auch unter anderen
chinesischen Versionen) wird die Zwei-Zeichen-Kombination °C zu einem
chinesichem Zeichen.

Also irgendwie muß das Gradzeichen unter chinesischem Windows ein
chinesisches Zeichen einleiten.

Jemand eine Ahnung von den Gesetzmàßigkeiten - und vor allem, wie umgeht
man das?

Ist nun keine speziellen VB-Frage, aber ich wußte nicht, wohin damit
sonst - ansonsten gerne in eine passendere Gruppe umleiten.

Gruß,
Martin
 

Lesen sie die antworten

#1 Thorsten Albers
31/01/2010 - 18:13 | Warnen spam
Martin Eckel schrieb im Beitrag
<hk45kp$lpp$...
ich habe hier ein Programm, welches noch unter VB3 geschrieben ist -
also noch 16-bit.
An einigen Stellen wird "°C" sowohl auf dem Bildschirm ausgegeben, wie
auch ausgedruckt.
Das funktioniert mit deutschem Windows auch, aber unter chinesischem
Windows XP (und wenn ich mich recht erinnere, auch unter anderen
chinesischen Versionen) wird die Zwei-Zeichen-Kombination °C zu einem
chinesichem Zeichen.
Also irgendwie muß das Gradzeichen unter chinesischem Windows ein
chinesisches Zeichen einleiten.
Jemand eine Ahnung von den Gesetzmàßigkeiten - und vor allem, wie umgeht
man das?



Das System, auf welchem statt '°C' ein chinesisches Zeichen erscheint,
arbeitet vermutlich mit einem DBCS (Double Byte Character Set) statt mit
einem SBCS (Single Byte Character Set). In einem DBCS sind bestimmte Bytes
für sich alleine keinem Zeichen zugeordnet, sondern erst in Kombination mit
einem zweiten Byte - das erste Byte wird dann als 'Lead Byte' bezeichnet.
In der Codepage 950 ('Chinese (Taiwan, Hong Kong SAR') z.B. ist 0xB0 (Gradzeichen in 'normaler' westeuropàischer Zeichencodierung) ein 'Lead
Byte' und kombiniert mit 0x43 (= ASCII 'C') zu einem chinesischen Zeichen
(Unicode 0x8693, 'CJK Unified Ideograph'). Insgesamt sind in der Codepage
950 die Bytes mit den Codes 0x81-0xFE als 'Lead Bytes' definiert
(allerdings werden AFAIK nicht wirklich alle verwendet).

Wenn das nicht erwünscht ist, könntest Du versuchen, ob Manipulationen an
der Kompatibilitàt für Dein Programm auf dem betroffenen System etwas
àndern ('Programm im Kompatibilitàtsmodus ausführen für: Windows 95'; '[x]
Erweiterte Textdienste für dieses Programm deaktivieren').

Thorsten Albers

albers (a) uni-freiburg.de

Ähnliche fragen