«Язык для не-Unicode программ» и Экспорт кириллицы в pdf

2282
Alexey Popkov

Благодаря комментарию Сабольча к этому вопросу, я нашел путь к Exportкириллическим символам из Mathematica в PDF правильно. Нам просто нужно установить общесистемную переменную, обычно называемую системной локальной (или язык для не-Unicode-приложений ), на американский английский, как описано здесь :

  1. Откройте « Язык и региональные стандарты» на панели управления .

  2. На вкладке « Дополнительно » в разделе « Язык» для программ, не поддерживающих Юникод, выберите английский (США) .

Этот подход имеет несколько ограничений юзабилити:

  • Только администратор может установить значение системного языка.
  • Установка языкового стандарта системы требует перезагрузки системы.
  • Только одна системная локаль может быть установлена ​​одновременно.

К сожалению, этот параметр влияет не только на Mathematica, но и на любую не-Unicode-программу, которая используется на компьютере, включая некоторые компоненты самой Windows. В результате эти программы работают некорректно, и в некоторых случаях изменение этой опции может даже вызвать BSOD . Например, интерпретатор командной строки cmd.exe в локализованной версии Windows после установки локальной системы на английский выглядит следующим образом: cmd.exe

Для Windows Server 2003 и Windows XP Microsoft разработала служебную программу Microsoft AppLocale, которая предназначена для запуска приложений, не поддерживающих Юникод, без изменения языкового стандарта системы (спасибо программисту Windows за справку). Но мне не удалось заставить его работать на Mathematica .

Можно ли установить системный языковой стандарт для Mathematica индивидуально, чтобы получить правильную кириллицу Exportв PDF?

РЕДАКТИРОВАТЬ

В каталоге . \ SystemFiles \ Converters \ Binaries \ Windows находится MathLinkисполняемый файл PDF.exe . Возможно, нам следует установить системный языковой стандарт US English именно для этого исполняемого файла?

PS Я использую локализованную Windows XP SP3.

3
Если это не дает вам решения, вы можете попробовать запросить SuperUser (или пометить для миграции), поскольку речь идет не о * Mathematica *. Mr.Wizard 11 лет назад 0
@ Mr.Wizard Возможно, вы правы, я отмечу это для миграции на SuperUser. Alexey Popkov 11 лет назад 0
Из командной строки, если вы запускаете `mode con cp`, о какой кодовой странице она сообщает? Это должно быть `866` для русских. bytebuster 11 лет назад 0
@bytebuster Да, я получаю `866`. Alexey Popkov 11 лет назад 0
Затем вам нужно проверить два элемента: (1) таблицы преобразования кодовых страниц, управляемые через вкладку «Дополнительно»; (2) в реестре отсутствуют замены шрифтов, такие как `" Arial, 0 "=" Arial, 204 "` и `" Arial "=" Arial, 204 "`. bytebuster 11 лет назад 0
@bytebuster Как я понимаю, это не проблема моей системы, а проблема * Mathematica * экспорта в PDF: он обрабатывает кириллические буквы правильно, только если для локальной системы задан американский английский. И проблема сохраняется для разных локализованных версий Wondows XP (не только русской). Поэтому, вероятно, единственное решение состоит в том, чтобы установить системный локальный английский (США) только для * Mathematica * или не использовать локализованную Windows XP. Или может быть возможно установить локальную систему на американский английский, но сконфигурировать syctem таким образом, чтобы все программы, не поддерживающие Юникод, работали правильно? Alexey Popkov 11 лет назад 0
Это допустимое предположение, но на скриншоте оболочка не отображает приветствие кириллицы. Я бы посоветовал заставить оболочку работать правильно, а затем посмотреть, требует ли Mathematica особой обработки. bytebuster 11 лет назад 0
@bytebuster Я представил снимок экрана как иллюстрацию того, что происходит, когда я устанавливаю системный языковой стандарт на американский английский. Когда он установлен на русский язык (как по умолчанию), все в порядке, но * Mathematica * не может правильно экспортировать буквы кириллицы. Microsoft задокументировала, что изменение языкового стандарта системы может привести к таким последствиям. Alexey Popkov 11 лет назад 0
@ Mr.Wizard Удивительно, но проблему можно решить, не выходя из * Mathematica * ... Alexey Popkov 11 лет назад 0
Да, я удивлен Спасибо, что поделились своим решением. Mr.Wizard 11 лет назад 0

1 ответ на вопрос

1
Alexey Popkov

Кажется, что проблему можно решить, установив явное значение CharacterEncodingглобальной опции FE (проверено с помощью MMa 8.0.4 и 9.0.0):

SetOptions[$FrontEnd, CharacterEncoding -> "UTF8"]; Export["test.pdf", "кириллический текст"] 

Эквивалентный способ (без изменения глобальных настроек FE):

Export["test.pdf",  Style["кириллический текст", CharacterEncoding -> "UTF8"]] 

Вместо "UTF8"одного можно установить "UTF-8"или "ASCII"с тем же эффектом. Недостатком этого подхода является то, что все неанглийские буквы выделены.