WinFuture-Forum.de: Unicode/ansi Parallel - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Unicode/ansi Parallel


#1 Mitglied ist offline   Source82 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 12. Dezember 05
  • Reputation: 0

geschrieben 31. Januar 2007 - 16:40

Hallo zusammen!

Kurze Erklärung:
Meine Anwendung kann Unicode und normale ANSI Dateien lesen. Schreiben
theoretisch auch, aber hier habe ich folgendes Problem:
Einige der Textdateien werden auch mit anderen Programmen geteilt,
die nicht UNICODE fähig sind. Daher kann ich nicht blind jede Datei
als UNICODE speichern.

Da ich es aber bei einigen Dateien tun muss (vor allem wenn z.B. chinesische
oder kyrillische Zeichen verwendet werden), würde ich gerne wissen, wie
es am sinnvollsten zu realisieren ist.

Meine Idee:
Den zu schreibenden String auf das Vorhandensein von Unicode-Zeichen
überrüfen und die Datei nur dann als Unicode speichern.
Hier stellt sich nur die Frage, ab wann man ein Zeichen eindeutig als Unicode
erkennt?

Bin für jede Hilfe dankbar. Vielleicht hat ja auch jemand einen besseren
Vorschlag für die Lösung?

Danke
Markus

P.S.: Anwendung basiert auf MFC und VS 8.0
0

Anzeige



#2 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 31. Januar 2007 - 17:03

Nimm UTF-8.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#3 Mitglied ist offline   Source82 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 12. Dezember 05
  • Reputation: 0

geschrieben 01. Februar 2007 - 08:43

Hi Rika!

Danke für die Antwort, aber UTF-8 ist auch ein Mehrbyte-Zeichensatz, was
trotz allem Probleme mit rein auf ASCII basierenden Anwendungen macht.
(Ich beziehe mich hier nur auf das Lesen von Dateien).

Danke
Markus
0

#4 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 01. Februar 2007 - 14:16

Du wirst nie ordentlich Unicode und ANSI/ASCII verbinden können. Schon allein deshalb nicht, weil eine ANSI-Codeseite nur 256 Zeichen umfasst, aber eine Unicode-BMP 65536 Zeichen.

Deshalb: Schreibe Unicode so, daß es bei ASCII-Anwendungen keine Probleme macht. Und genau dafür ist UTF-8 gedacht.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#5 Mitglied ist offline   Source82 

  • Gruppe: Mitglieder
  • Beiträge: 5
  • Beigetreten: 12. Dezember 05
  • Reputation: 0

geschrieben 01. Februar 2007 - 22:32

Das es "halbwegs" ordentlich funktioniert ist aber die Aufgabenstellung.
Wenn es nur nach mir ginge, würde ich alles in Unicode wegspeichern und gut is.
Aber es soll nun mal so sein, dass Dateien, die nicht unbedingt Unicode sein
müssen auch nicht als solche gespeichert werden sollen.

Die technischen Grundlagen hinter den Kodierungsverfahren sind mir auch
bekannt, nur suche ich eben nach einer Lösung, Dateien die rein in
ASCII dargestellt werden könnten auch als solche zu speichern. Meine Idee
war ja, vor dem Speichern zu überprüfen, ob Unicode verwendet werden
muss oder nicht.

Hast du vielleicht eine Lösung für dieses Problem. Ein CString Objekt auf
Unicode-Zeichen zu überprüfen?

Danke
Markus
0

#6 Mitglied ist offline   FaceItReal 

  • Gruppe: aktive Mitglieder
  • Beiträge: 42
  • Beigetreten: 11. Januar 06
  • Reputation: 0

geschrieben 03. Februar 2007 - 00:20

@Source82: um als erstes deine Frage zu beantworten: prüfe ob das Unicodezeichen (WORD) > 255 ist, wenn ja -> Unicode.

Bist du dir sicher, dass deine anderen Programme vlt nicht doch Unicode lesen können? Schreibst du den "Unicode-Header" mit in die Datei?
0

#7 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 03. Februar 2007 - 13:37

Zitat

Das es "halbwegs" ordentlich funktioniert ist aber die Aufgabenstellung

Dann musst du halt zählen.
int count[ANSI_Codepages.length];
foreach(char c in string)
foreach(ANSI_Codepage cp in ANSI_Codepages)
if cp.contains© count[cp]++;

Und dann nimmst du die Codepage mit dem besten Count.

Zitat

Dateien die rein in ASCII dargestellt werden könnten

Ja was nun? Geh mal lieber davon aus, daß internationale Darstellungen ohnehin nur mit Unicode ordentlich funktionieren.

Oder willst du, daß die Dateien zwar nicht sinnvoll gelesen werden können, aber auch nicht kaputtgehen können? Dann nimm UTF-7.

Zitat

Ein CString Objekt auf Unicode-Zeichen zu überprüfen?

Du meinst die IsUnicodeString()-Raterei? Das ist auch keine Lösung.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0