правильно отображать немецкие специальные символы в Delphi 2007 - PullRequest
2 голосов
/ 21 июля 2011

Мне нужно правильно отображать немецкие специальные символы в Delphi 2007, так как сейчас я получаю такие символы, как «ü», которые выглядят как «?»в компонентах этикетки

любой совет

Спасибо

1 Ответ

5 голосов
/ 21 июля 2011

Неожиданный вопросительный знак (?) отображается, когда текст проходит через преобразование кодовой страницы, которое завершается неудачей.

Поскольку Delphi 2007 не поддерживает Unicode, Caption вашего ярлыка - AnsiString.Текст, который вы помещаете туда, проходит по крайней мере через одно преобразование кодовой страницы, которое завершается неудачно, и вам нужно выяснить, где происходит преобразование и почему оно терпит неудачу.

Распространенные причины преобразований кодовой страницы:

  • Текст для вашего Label взят из DFM (вы написали его в Object Inspector).Ваш компьютер и тестовый компьютер используют разные «кодовые страницы по умолчанию для приложений, не поддерживающих Юникод».Вы должны никогда не видеть это во время тестирования на своем компьютере.
  • Текст для вашего Label получен из базы данных, и либо база данных имеет неправильную кодовую страницу, либо ваш тестовый компьютер имеет неправильный кодpage: когда Delphi старательно пытается преобразовать кодовую страницу, происходит сбой.
  • Неправильно установлено свойство набора символов шрифта вашей метки.

Вот немного кода дляпоместите символ ü в метку для тестирования.Код выбирает EASTEUROPE_CHARSET, поэтому я знаю, что имею дело с кодовой страницей 1250 .Я делаю это потому, что другие константы Charset либо выбирают неиспользуемые кодовые страницы (которые не включают "ü"), либо выбирают кодовую страницу, которая зависит от ОС (то есть: без фактических изменений).

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Font.Charset := EASTEUROPE_CHARSET;
  Label1.Caption := Char(252);
end;
...