Локализация.NET: японский дисплей символов как квадраты

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

Установка:

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

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

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

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

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

Спасибо за любую обратную связь!

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

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. Это вызвано тем, что шрифты строки заголовка установлены на системном уровне а не прикладном уровне?

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

9
задан Makoto 29 April 2012 в 18:27
поделиться

3 ответа

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

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

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

8
ответ дан 4 December 2019 в 21:10
поделиться

Вот отличное чтение о ваших выпусках от Джоэла Спольского.

2
ответ дан 4 December 2019 в 21:10
поделиться

Это лучший способ:
http://github.com/guides/completely-remove-a-file-from-all-revisions

Сначала создайте резервные копии файлов.

EDIT

Редактирование, выполненное Неоном , к сожалению, было отклонено во время проверки.
Смотрите публикацию Неонс ниже, она может содержать полезную информацию!


Например. удалить все файлы * .gz , случайно зафиксированные в репозитории git:

$ du -sh .git ==> e.g. 100M
$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch *.gz' HEAD
$ git push origin master --force
$ rm -rf .git/refs/original/
$ git reflog expire --expire=now --all
$ git gc --prune=now
$ git gc --aggressive --prune=now

Это все еще не сработало для меня? (В настоящее время я нахожусь в git версии 1.7.6.1)

$ du -sh .git ==> e.g. 100M

Не знаю почему, так как у меня была только ОДНА главная ветвь. В любом случае, я, наконец, получил мой git репо правдиво очищен, толкая в новый пустой и голый репозиторий git, например,

$ git init --bare /path/to/newcleanrepo.git
$ git push /path/to/newcleanrepo.git master
$ du -sh /path/to/newcleanrepo.git ==> e.g. 5M 

(да!)

Затем я клонирую это в новый каталог и переместился по папке .git в этот. например,

$ mv .git ../large_dot_git
$ git clone /path/to/newcleanrepo.git ../tmpdir
$ mv ../tmpdir/.git .
$ du -sh .git ==> e.g. 5M 

(да! наконец-то очистились!)

После проверки того, что все хорошо, тогда вы можете удалить ../large _ dot _ git и ../tmpdir каталоги (может быть, через пару недель или через месяц, на всякий случай...)

-121--1810552-

Это прекрасно работает:

>>> class MyThread(threading.Thread):
...   def __init__(self):
...     super(MyThread, self).__init__()

Я думаю, что ошибка вашего кода заключается в том, что вы передаете базовый класс, а не текущий класс, super , т.е. вы вызываете super (threading.Thread,... , и это просто неправильно. Трудно сказать, так как вы не показываете свой код ошибки, но это то, что я выводю наклонно из языка, который вы используете! -)

-121--2596202-

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

В течение 3 лет я поддерживал японское приложение на основе форм (www.jbrute.com), которое мигрировало из MFC в WinForms в WPF через американские английские версии XP, Vista и Win7. Здесь отображаются Kanji, Kana и Uses the IME. Никакого горя.

0
ответ дан 4 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: