Frage

Verwendung von (sagen wir) Windows GDI und einige der Unicode-Zeichen dargestellt werden als Fragezeichen

Ich bin versucht, einen Text in meinem Programm angezeigt werden? Was ist oben?

Siehe auch: Was bedeutet es wenn mein Text wird als Kästchen angezeigt?

War es hilfreich?

Lösung

In Windows gibt es zwei gemeinsame Darstellungsprobleme, die auftreten, wenn man versucht, Unicode-Zeichen angezeigt werden:

  1. Text manchmal erscheint als Fragezeichen

    • Dies geschieht, wenn Unicode-Daten in eine 8-Bit-Zeichensatzcodierung (oder technisch Mehrbyte-Zeichen) umgewandelt wird, in der Regel über die System-Codepage (aber auch andere Codeseiten in den Umwandlungs Anrufen angegeben werden). Wenn das Ziel 8-Bit-Zeichensatz der Zeichen nicht benötigt enthält, wird alle Zeichen, die nicht in dem Zielzeichensatz darstellbar erhalten umgewandelt in Fragezeichen.
  2. Text manchmal erscheint als Kästchen

    • Dies ist ein Problem mit der Schrift die glpyh für einen bestimmten Charakter nicht mit. Boxen angezeigt, wenn ein Konflikt zwischen Unicode-Zeichen in dem Dokument ist und den von der Schriftart unterstützt. Insbesondere stellen die Boxen Zeichen nicht durch die gewählte Schriftart unterstützt.

Andere Tipps

Es bedeutet, dass Ihr Unicode-Text irgendwo in ANSI Text umgewandelt zu werden. Da Unicode-Zeichen außerhalb von Latin-1 kann nicht in ANSI konvertiert werden, werden sie in Fragezeichen konvertiert. Stellen Sie sicher, dass Ihr Programm mit Unicode-Unterstützung auf (das heißt die Präprozessorsymbole UNICODE und _UNICODE sind #defined von Ihrem Projekt) kompiliert wird, so dass Sie immer die richtigen Unicode-Versionen der verschiedenen Windows-Funktionen aufrufen.

Im Grunde haben Sie den Text beschädigt. Sie nehmen Unicode-Text in einer Codierung und haben dann an einem anderen Codierung umgewandelt, ohne dass Zielcodierung alle Zeichen Überprüfung im Quelltext enthält. getan zu haben, so dass Sie einen Haufen Kauderwelsch bekommen haben.

Wege, dies zu tun ist:

  1. Die Behandlung von UTF-8-Text als ANSI (ohne in eine gültige Code-Seite Umwandlung zuerst)
  2. Konvertieren von Unicode-Text in eine Code-Seite, ohne zu überprüfen, ob die Code-Seite hat die richtigen Zeichen in ihm.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top