2009-04-23 4 views
2

Die Anwendung, die ich mit EVC++ 4 entwickle, läuft auf Windows CE 5 und sollte Unicode unterstützen (AFAIK wchar_t verwendet UTF-16 unter Windows, also verwende ich das), also ich Ich möchte es mit "exotischeren" Charakteren testen können. Vor allem mit Zeichen, die 4 Byte in UTF-16 verwenden und nicht nur 2. Deshalb versuche ich, solche Zeichen in einem Texteditor (atm auf meinem Desktop-PC mit Windows XP, nicht auf dem eingebetteten Gerät) anzuzeigen.Anzeigen von Unicode-Zeichen über U + FFFF unter Windows

Aber ich habe es noch nicht geschafft, dies zu tun. Als Beispiel habe ich gewählt. Wie erwähnt here "MPH 2B Damase" sollte dieses Zeichen unterstützen. Also habe ich die Schrift heruntergeladen und in Windows \ Fonts abgelegt. Ich habe eine Textdatei ein Hexeditor mit (nur um sicher zu sein) mit folgendem Inhalt:

FFFE D802 DC00

Wenn ich es mit Notepad öffnen (welche Unicode-fähig sein sollte, rechts) und verwenden Sie die heruntergeladene Schrift es nicht Display 1 char, wie vorgesehen, aber diese 2:

˘Ü

Was mache ich falsch? :)

Danke!

hrniels

Edit: die BOM Flipping, wie vorgeschlagen, funktioniert nicht. Notepad (und alle anderen Editoren, die ich ausprobiert habe) zeigt in diesem Fall zwei Quadrate an. Interessant ist, dass wenn ich die zwei Quadrate hier (mit Firefox) kopiere, ich das richtige Zeichen sehe:

 Ich habe es auch mit Komodo Edit mit dem gleichen Ergebnis versucht. 

Die Verwendung von UTF-8 hilft auch nicht Notizblock.

Antwort

1

Ihr Texteditor mag UTF-16 möglicherweise nicht. Es wird wahrscheinlich ANSI oder UTF-8 angenommen.

Versuchen der Eingabe in dem UTF-8-Äquivalent statt:

0xF0 0x90 0xA0 0x80 

Dies wird Ihre Prüfung nicht helfen, wird aber sicherstellen, dass Ihre Schrift nicht fehlerhaft ist. Ein Texteditor, der UTF-16 unterstützt, ist Komodo Edit.

+1

0xFFFE ist die Byte-Reihenfolge-Marke, die die Verwendung von UTF-16 (Little Endian) anzeigt. Notepad sollte dies erkennen können. –

+0

Ich bin mir dessen bewusst. Aber er sagt nicht, ob er Notepad benutzt oder nicht. Es gibt viele Texteditoren, die UTF-16 nicht verarbeiten. – Skurmedel

+0

Außerdem können alle Editoren auch keine Stücklisten bearbeiten. – Skurmedel

1

Was passiert, wenn Sie die Byte-Reihenfolge-Marke umgekehrt setzen?

FEFF D802 DC00

(Momentan die Byte-Sequenz wie die zwei Zeichen U + 02D8 U + 00DC interpretiert wird, so hoffentlich die BOM Umklappen wird das Bytes verursacht in der vorgesehenen Reihenfolge zu lesenden)

+0

+1. Scheint wie eine Lösung. – Skurmedel

+0

Ah, vielleicht hast du recht. Ich werde das morgen versuchen und hier berichten :) – hrniels

+0

Leider funktioniert es nicht. Wenn ich den BOM-Editor ändere (und alle anderen Editoren, die ich ausprobiert habe), werden zwei Quadrate angezeigt. Interessant ist, dass, wenn ich die beiden Quadrate hier kopieren (mit Firefox) ich die richtigen Zeichen sehen:


                            
    hrniels
                                
                            
                        
                    

1

Wahrscheinlich haben Sie vergessen, die _wfopen() Dokumentation zu lesen. Dort spezifizieren sie den Kodierungsparameter. BTW, ich nahm an, dass Sie bereits Unicode (wchars) verwenden.

Ich würde Ihnen empfehlen, UTF-8 in Dateien mit oder ohne BOM zu verwenden, aber zwingt Ihr fopen, UTF-8-Flag zu verwenden. Es sieht _wfopen("newfile.txt", "r, ccs=UTF-8"); wird mit UTF-8 mit oder ohne Stückliste und auch mit UTF-16 arbeiten. Machen Sie nicht den Fehler, die ccs=Unicode zu verwenden, ist es üblich, UTF-8-Dateien ohne BOM zu haben.

Sie sollten wirklich ein wenig über Unicode lesen, bevor Sie versuchen zu arbeiten.Dies ist eine sehr gute Investition - es wird Ihnen Zeit sparen, wenn Sie verstehen, wie Unicode funktioniert.

ist hier ein Start http://blog.i18n.ro/newbie-guide-to-unicode/ und vergessen Sie nicht die Links am Ende des Artikels zu lesen.

Wenn Sie wirklich einen einfachen Texteditor benötigen, die Sie mit Unicode-Codierung zu spielen, verwenden Notepad++ und vergessen Sie den Editor.

Verwandte Themen