Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Unterschied zwischen Codepage und Character Set? (https://www.delphipraxis.net/98994-unterschied-zwischen-codepage-und-character-set.html)

Ganymed 5. Sep 2007 07:38


Unterschied zwischen Codepage und Character Set?
 
Hallo!

Was ist der Unterschied zwischen einer Codepage und einem Character Set? Und in welcher Beziehung stehen beide zueinander?

Danke im Voraus

Ganymed

shmia 5. Sep 2007 09:04

Re: Unterschied zwischen Codepage und Character Set?
 
Character Set = Zeichensatz z.B. ASCCI oder EBCDIC
Jeder Zeichensatz hat dann fast immer verschiedene Codepages, da die Anzahl der möglichen Zeichen nicht für alle Länder und Sprachen ausreichen.
2 Codepages aus der gleichen Familie (Zeichensatz) sind zu grossen Teilen identisch und unterscheiden sich meistens nur bei Zeichen, die über #128 liegen.

Unicode braucht als einziger Zeichensatz keine verschiedenen Codepages, da er (fast) alle Zeichen der Welt aufnehmen kann.

Ganymed 6. Sep 2007 14:57

Re: Unterschied zwischen Codepage und Character Set?
 
Auch nachdem ich nun mehrere Tage darüber nachgedacht habe, habe ich deine Antwort immer noch nicht verstanden.

Ich habe noch ein wenig recherchiert, konnte aber kaum brauchbaren Informationen finden.

Interessantes fand ich in der Delphi-Hilfe zum Typen TFontCharset (Auszug):
Zitat:

Der Typ TFontCharset repräsentiert den Zeichensatz für eine Schrift.
[...]
Jede Windows-Schriftart unterstützt einen oder mehrere Zeichensätze. Der jeweilige Zeichensatz ist von der verwendeten Schrift abhängig. Welche Schriftarten unterstützt werden, erfahren Sie beim jeweiligen Hersteller.

Die folgenden Tabelle enthält die vordefinierten Konstanten für Standard-Zeichensätze:

Konstante | Wert | Beschreibung
ANSI_CHARSET | 0 | ANSI-Zeichen.
DEFAULT_CHARSET | 1 | Die Auswahl der Schrift erfolgt der Basis der Eigenschaften Name und Size. Wenn die betreffende Schrift auf dem System nicht verfügbar ist, verwendet Windows eine andere Schrift.
GB2312_CHARSET | 134 | Vereinfachte chinesische Zeichen (Festlandchina).
CHINESEBIG5_CHARSET | 136 | Traditionelle chinesische Zeichen (Taiwan).
GREEK_CHARSET | 161 | Griechische Zeichen. Auf NT 3.51-Systemen nicht verfügbar.
TURKISH_CHARSET | 162 | Türkische Zeichen. Auf NT 3.51-Systemen nicht verfügbar.
VIETNAMESE_CHARSET | 163 | Vietnamesische Zeichen. Auf NT 3.51-Systemen nicht verfügbar.
RUSSIAN_CHARSET | 204 | Kyrillische Zeichen. Auf NT 3.51-Systemen nicht verfügbar.
THAI_CHARSET | 222 | Thailändische Zeichen. Auf NT 3.51-Systemen nicht verfügbar.
EASTEUROPE_CHARSET | 238 | Enthält diakritische Zeichen für osteuropäische Länder. Auf NT 3.51-Systemen nicht verfügbar.
[...]
Will heißen: ASCII kennt 128 Zeichen (wegen 7Bit und so). Wenn aber eine Schriftart (z.B. Arial) alle Zeichen/Buchstaben aller Sprachen beinhalten soll, kommt sie damit nicht hin. Ergo wird die Schriftart in "Zeichensätze" unterteilt (ich stelle mir das jetzt wirklich bildlich vor, wie ich einen Kasten mit lateinischen Buchstabenklötzchen habe, einen mit cyrillischen Klötzchen und einen mit chinesischen; in jeden Kasten passen 128 Klötzchen, die alle zur gleichen Schriftart gehören).

Jetzt ziehe ich noch folgende Tabelle aus der Multilizer [http://www.multilizer.com] Dokumentation:
Zitat:

The following table contains the code pages and charsets of Windows and their corresponding languages.
Code Page | Charset | Languages
874 | 222 | Thai
932 | 128 | Japanese
936 | 134 | Chinese (Simplified)
949 | 129, 130 | Korean
950 | 136 | Chinese (Traditional)
1250 | 238 | Albanian, Croatian, Czech, Hungarian, Polish, Romanian, Serbian (Latin), Slovakian, Slovene
1251 | 204 | Belarussian, Bulgarian, Russian, Serbian (Cyrillic), Ukrainian
1252 | 0 | Afrikaans, Basque, Catalan, Danish, Dutch, English, Faeroese, Finnish, French, German, [...]
1253 | 161 | Greek
1254 | 162 | Turkish
1255 | 177 | Hebrew
1256 | 178 | Arabic, Farsi
1257 | 186 | Estonian, Latvian and Lithuanian
1258 | 163 | Vietnamese
Darin kann man -wer hätte das gedacht- in der Spalte "Charset" die Werte aus der TFontCharset-Docu wiederfinden. So hat der griechische Zeichensatz GREEK_CHARSET (161) die CodePage 1253.

CodePage und CharSet scheinen also in einer 1:1-Beziehung zu stehen.

Und sofern ich die Funktion des Character Sets richtig gedeutet habe, bliebe also die Frage, was denn nun eine CodePage (außer dass man sie bei Windows unter "Regions- und Sprachoptionen" einstellen kann) ist und was sie mit dem Charset zu tun hat...

Bernhard Geyer 13. Sep 2007 07:27

Re: Unterschied zwischen Codepage und Character Set?
 
Am besten du vergisst Codepages/Charsets und befasst dich gleich mit Unicode und setzt Unicode-Conrols wie das Elpack oder die TMS Unicode Controls ein, denn Codepages/Charsets werden nicht von allen Controls unterstützt und auch manche Zeichen einer Sprache kannst du damit nicht darstellen bzw. gemischte GUI's werden auch sehr schwierig.

s-off 13. Sep 2007 07:44

Re: Unterschied zwischen Codepage und Character Set?
 
Zitat:

Zitat von Bernhard Geyer
Am besten du vergisst Codepages/Charsets und befasst dich gleich mit Unicode und setzt Unicode-Conrols wie das Elpack oder die TMS Unicode Controls ein [...]

Geht es Dir überhaupt um den Einsatz irgendwelcher Komponenten? Oder geht es Dir vielleicht darum, Druckoutput zu generieren?
In letzterem Fall wäre es etwas zu kurz geschossen, zu sagen, man solle Codepages und Charsets vergessen.

Bernhard Geyer 13. Sep 2007 08:05

Re: Unterschied zwischen Codepage und Character Set?
 
Zitat:

Zitat von s-off
Geht es Dir überhaupt um den Einsatz irgendwelcher Komponenten? Oder geht es Dir vielleicht darum, Druckoutput zu generieren?
In letzterem Fall wäre es etwas zu kurz geschossen, zu sagen, man solle Codepages und Charsets vergessen.

Wieso? Unsere Druckausgaben werden auch ohne Codepages/Charsets erledigt. Mussten jedoch selbst was stricken das der Markt nicht soviel hergibt und das was er hergibt Lizenztechnisch für uns ungeeignet war/ist.
Mit List&Label gibt es eine Unicode-Enabled Druckimplementierung die auch für Delphi gut geeignet ist (Kompos vorhanden).

s-off 13. Sep 2007 08:37

Re: Unterschied zwischen Codepage und Character Set?
 
Zitat:

Zitat von Bernhard Geyer
Mit List&Label gibt es eine Unicode-Enabled Druckimplementierung die auch für Delphi gut geeignet ist (Kompos vorhanden).

Wir setzen keine Komponenten ein. Wir erzeugen unseren PCL-Datenstrom bzw. Postscript selber.
Aber trotzdem danke für den Tipp; ist ggf. für den privaten Bereich ganz interessant.

Edit: Quote-Tag geschlossen

Bernhard Geyer 13. Sep 2007 08:44

Re: Unterschied zwischen Codepage und Character Set?
 
Zitat:

Zitat von s-off
Wir setzen keine Komponenten ein. Wir erzeugen unseren PCL-Datenstrom bzw. Postscript selber.
Aber trotzdem danke für den Tipp; ist ggf. für den privaten Bereich ganz interessant.

Und PCL/Postscript kennt keinen "Unicode-Mode"?

s-off 13. Sep 2007 08:56

Re: Unterschied zwischen Codepage und Character Set?
 
Zitat:

Zitat von Bernhard Geyer
Und PCL/Postscript kennt keinen "Unicode-Mode"?

Ähm, ich glaube, wir reden aneinander vorbei :gruebel:

Wie dem auch sei - ich wollte eigentlich nur sagen, dass wir im Druckbereich keine Drittkomponenten einsetzen, sondern alles selber machen. Es handelt sich dabei um ein seit knapp 20 Jahren wachsendes System. Aber das ist ja auch egal und vollkommen Off-Topic.

Was ich eigentlich - zum Thema - sagen wollte, ist, dass man, wenn man sich mit Druckausgaben beschäftigt, schon wissen sollte, worum es sich bei Codepages und Zeichensätzen handelt. Daher sagte ich auch, dass es in dem Fall etwas kurz geschossen sei, diese außen vor zu lassen.

Das, was Du sagst, ist schon alles korrekt so - also nichts für Ungut :-D

Bernhard Geyer 13. Sep 2007 09:59

Re: Unterschied zwischen Codepage und Character Set?
 
Zitat:

Zitat von s-off
Zitat:

Zitat von Bernhard Geyer
Und PCL/Postscript kennt keinen "Unicode-Mode"?

Ähm, ich glaube, wir reden aneinander vorbei :gruebel:

Nicht unbedingt. PCL/Postscript wird ja sich auch weiterentwickelt haben so das u.U. dieses Problem auch gelöst wurde ohne Codepages/Charsets verwendet zu müssen, indem ähnlich wie bei HTML man mit Hex-Werten arbeiten kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 Uhr.
Seite 1 von 2  1 2      

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