"Язык для не-Unicode программ" и Экспорт кириллицы в pdf
Благодаря комментарию Сабольца к этому вопросу, я нашел способ Export
Кириллические символы из Mathematica в PDF правильно. Нам просто нужно установить общесистемную переменную, обычно называемую системной локальной (или язык для не-Unicode-приложений), на американский английский, как описано здесь:
Откройте " Язык и региональные стандарты" на панели управления.
На вкладке " Дополнительно " в разделе " Язык" для программ, не поддерживающих Юникод, выберите английский (США).
Этот подход имеет несколько ограничений юзабилити:
- Только администратор может установить системный языковой стандарт.
- Установка языкового стандарта системы требует перезагрузки системы.
- Только одна системная локаль может быть установлена одновременно.
К сожалению, этот параметр влияет не только на Mathematica, но и на любую не-Unicode-программу, которая используется на компьютере, включая некоторые компоненты самой Windows. В результате эти программы работают некорректно, и в некоторых случаях изменение этой опции может даже вызвать BSOD. Например, интерпретатор командной строки cmd.exe в локализованной версии Windows после установки локальной системы на английский выглядит следующим образом:
Для Windows Server 2003 и Windows XP Microsoft разработала служебную программу Microsoft AppLocale, которая предназначена для запуска приложений, не поддерживающих Юникод, без изменения языкового стандарта системы (спасибо программисту Windows за справку). Но мне не удалось заставить его работать на Mathematica.
Можно ли установить системный язык индивидуально для Mathematica, чтобы получить правильную кириллицу Export
в PDF?
РЕДАКТИРОВАТЬ
Есть PDF.exe MathLink
исполняемый файл в каталоге.\SystemFiles\Converters\Binaries\Windows. Возможно, нам следует установить системный языковой стандарт US English именно для этого исполняемого файла?
PS Я использую локализованную Windows XP SP3.
1 ответ
Кажется, что проблему можно решить, установив явное значение 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"
с тем же эффектом. Недостатком этого подхода является то, что все неанглийские буквы выделены.