2008-10-20 10 views

Odpowiedz

6

W Windows istnieją 2 wspólne problemy z wyświetlaniem, które występują podczas próby wyświetlenia znaków Unicode:

  1. tekst czasami pojawia się jako znaki zapytania

    • Dzieje się tak, gdy dane Unicode jest konwertowana na 8 -bitowe kodowanie znaków (lub technicznie wielobajtowe) zwykle za pośrednictwem strony kodowej systemu (ale w wywołaniach konwersji można określić inne strony kodowe). Jeśli docelowy 8-bitowy zestaw znaków nie zawiera wymaganych znaków, wszystkie znaki, które nie są reprezentatywne w docelowym zestawie znaków, zostaną przekonwertowane na znaki zapytania.
  2. tekst czasami pojawia się jako pudełka

    • Jest to problem z czcionka nie mając glpyh dla konkretnego charakteru. Pola pojawiają się, gdy występuje niedopasowanie między znakami Unicode w dokumencie a tymi obsługiwanymi przez czcionkę. W szczególności pola reprezentują znaki, które nie są obsługiwane przez wybraną czcionkę.
0

Zasadniczo masz uszkodzony tekst. Używasz tekstu Unicode w jednym kodowaniu, a następnie przekonwertujesz go na inne kodowanie bez sprawdzania, czy docelowe kodowanie zawiera wszystkie znaki w źródłowym tekście. Po zrobieniu tego masz garść bełkotu.

sposoby osiągnięcia tego celu to:

  1. Leczenie UTF-8 tekst jako ANSI (bez konwersji do ważnego pierwszego kodu stronie)
  2. przekształcania tekstu Unicode w code-strony bez sprawdzenia, czy kod strona ma właściwe znaki.
1

Oznacza to, że tekst w Unicode jest konwertowany gdzieś na tekst ANSI. Ponieważ znaki Unicode spoza Latin-1 nie mogą być konwertowane na ANSI, są konwertowane na znaki zapytania. Upewnij się, że twój program jest skompilowany z obsługą Unicode na (tj. Symbole preprocesora UNICODE i _UNICODE są # zdefiniowane przez twój projekt), więc zawsze wywołujesz odpowiednie wersje Unicode różnych funkcji Windows.