Локализация .NET: японские символы отображаются в виде квадратов - PullRequest
9 голосов
/ 18 января 2010

Хорошо, я мало занимаюсь программированием .Net, но у меня есть такой, который я поддерживаю, поэтому ответ на этот вопрос может быть очевиден.

Установка:

  • Windows 7 Ultimate со всеми установленными языковыми пакетами
  • Visual Studio 2008 Winforms проект VB.Net.

Я нахожусь в процессе локализации этого проекта, и когда я делаю японскую версию форм, символы отображаются в виде квадратов, хотя они корректно отображаются в моем браузере. Я предполагаю, что это потому, что шрифт по умолчанию не имеет глифа для этих символов.

Итак, мои вопросы:

Является ли winforms UTF-8 или какая-либо другая кодировка символов? Есть ли способ изменить кодировку символов? Должен ли я изменить шрифт для японских форм, или Windows сделает это? Какая общая лучшая практика здесь?

Я хочу знать, что я правильно копирую символы в свои формы и хочу проверить их. Как я могу это сделать?

Спасибо за любые отзывы!

EDIT : Спасибо за информацию! Вот что я нашел.

Arial Unicode MS имеет все глифы, но я не использовал его, потому что его не было в списке шрифтов VS2008. Я вручную отредактировал поле шрифта, чтобы использовать его, но затем Visual Studio выдает сообщение « Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память была повреждена ». Я предполагаю, что это потому, что VS не имеет доступа к этому шрифту по какой-то причине. Я возвращаюсь к шрифту по умолчанию, страшное сообщение об ошибке исчезает.

Затем, даже при использовании Arial Unicode MS, текст отображается в виде блоков в заголовках форм. Тот же текст отображается правильно в метках.

Итак, я думаю, что хочу использовать шрифт по умолчанию и позволить Windows справиться с этим. Я думаю, что я прочитал, что все, начиная с XP, справится с этим. Windows 2000 не будет, и это позор, но что бы я ни знал, какой шрифт мне следует использовать, и какой бы он ни был, он был исключен из VS. Я не знаю, как добавить его, не получая много сообщений об ошибках в защищенной памяти.

Теперь проблема в том, чтобы изменить размеры надписей в форме, так как переведенный текст часто больше.

Кроме того, у меня нет команды поддержки, которая могла бы сделать это для меня, но я мог бы, возможно, установить дополнительные копии Windows 7, перейти на японский языковой пакет и попробовать запустить его. Но это становится основной болью. Я думал, что прочитал, что вы можете изменить язык во время работы приложения, но это не так. Документы MS говорят о том, как это сделать, но Windows 7 также говорит вам, что вы должны выйти из системы, чтобы изменить язык.

MS Gothic, кажется, работает, и это часть VS 2008, но строка заголовка остается квадратной. Это действительно странно, так как в winform есть те же символы. Это потому, что шрифты строки заголовка установлены на системном уровне, а не на уровне приложения?

Извините за словесность. Не уверен, что здесь есть даже вопрос. Просто пытаюсь разобраться со всем этим, так что, возможно, это поможет кому-то еще.

Ответы [ 3 ]

8 голосов
/ 18 января 2010

Любой код .NET, включая Windows Forms, использует Unicode, закодированный как UTF16. Скорее всего, ваша проблема не в кодировке, а в вопросе вместо квадратов. Получение квадрата означает, что вы используете шрифт, в котором отсутствует необходимый глиф для отображения японского символа.

Вы можете использовать апплет charmap.exe, чтобы узнать, какие глифы поддерживаются используемым шрифтом. Если они отсутствуют, то операционная система вынуждена использовать альтернативный шрифт и потерпеть неудачу, когда не может его найти. Отображение квадратов - это все, что он может сделать. Старая версия операционной системы, скорее всего, является причиной этой ошибки, особенно для XP без установленных дополнительных восточноазиатских шрифтов.

Обратите внимание, что эта проблема со шрифтами вряд ли будет проблемой на машине, которая загружает японскую версию Windows. Разумеется, для отображения текста на японском языке придется использовать соответствующие шрифты. Вы можете получить определенные языковые версии Windows через подписку MSDN. По крайней мере, получите один для ваших сотрудников QA, чтобы они могли убедиться, что все работает правильно.

2 голосов
/ 18 января 2010

Вот отличное чтение по вашим вопросам от Джоэла Спольски.

0 голосов
/ 04 февраля 2010

Для ясности, вы установили языковую поддержку: Панель управления / Региональные параметры / Языки отображения. Предположительно у вас есть японский текст в исходном коде. Вы сохраняете исходный код как некий Unicode, верно?

В течение 3 лет я поддерживал японское приложение на основе форм (www.jbrute.com), которое перешло с MFC на WinForms на WPF в английских версиях XP, Vista и Win7 для США на английском языке. Он отображает кандзи, кана и использует IME. Никакой скорби.

...