Символы Юникода в исходных файлах MATLAB
Я хотел бы использовать символы Юникода в комментариях в исходном файле MATLAB. Кажется, это работает, когда я пишу текст; однако, если я закрою файл и перезагрузлю его, "необычные" символы будут превращены в знаки вопроса. Я предполагаю, что MATLAB сохраняет файл как ASCII.
Есть ли способ сказать MATLAB использовать вместо UTF-8?
5 ответов
Как процесс MATLAB использует Locale Settings, показывает, как установить кодировку для разных платформ. использование
feature('DefaultCharacterSet')
Вы можете прочитать больше об этой недокументированной функции здесь. Смотрите также эту ветку Matlab Central для других опций.
Согласно http://www.mathworks.de/matlabcentral/newsreader/view_thread/238995
feature('DefaultCharacterSet', 'UTF8')
изменит кодировку на UTF-8. Вы можете поместить строку выше в вашем файле startup.m.
Представленное здесь решение работало для меня на Windows с R2018a.
В случае, если ссылка не работает: идея заключается в использовании файла matlabroot/bin/lcdata.xml
настроить псевдоним для кодирования имени (некоторые пояснения можно найти в этом самом файле в комментариях):
<codeset>
<encoding name="UTF-8">
<encoding_alias name="windows-1252" />
</encoding>
</codeset>
Вы бы использовали свое собственное значение вместо windows-1252
текущую используемую кодировку можно получить, запустив feature('locale')
,
Хотя, если вы используете символы Юникода в комментариях справки, браузер справки не распознает их, а также выводит окно консоли.
Только Mac OSX!
Как я нашел решение, которое сработало в моем случае, я хочу поделиться им.
Mathworks советует здесь использовать slCharacterEncoding(encoding)
чтобы изменить кодировку по желанию, но для OSX это не решает проблему точно так же, как feature('DefaultCharacterSet')
в принятом ответе не делает этого. Что помогло мне получить набор кодировки UTF-8 для открытия и сохранения файлов.m, так это следующая ссылка на ответы MATLAB: https://www.mathworks.com/matlabcentral/answers/12422-macosx-encoding-problem
Matlab, кажется, игнорирует любое значение, установленное в slCharacterEncoding(encoding)
или же feature('DefaultCharacterSet')
но использует регион, заданный в Системных настройках -> Язык и регион. После проверки того, какой регион выбран в нашем случае, можно определить фактическую кодировку в скрытом файле конфигурации в
$matlabroot/bin/lcdata.xml
Этот каталог можно открыть, перейдя в "Приложения" и щелкнув правой кнопкой мыши на Matlab, выбрав "Показать содержимое пакета", как на скриншоте (здесь на немецком языке)
Например, для немецкого ISO-8859-1 по умолчанию его можно изменить, изменив соответствующую строку в файле lcdata.xml:
<locale name="de_DE" encoding="ISO-8859-1" xpg_name="de_DE.ISO8859-1">
чтобы:
<locale name="de_DE" encoding="UTF-8" xpg_name="de_DE.UTF-8">
Если выбранный регион отсутствует в файле lcdata.xml, это не будет работать.
Надеюсь это поможет!
Для пользователей Mac решение Jendker действительно помогает!!! Большое спасибо в первую очередь.
Не забудьте проверить язык по умолчанию в Matlab
getenv('LANG')
Затем перейдите к lcdata.xml
найдите соответствующий xpg_name
и изменить encoding
в UTF-8
,
Теперь перезапустите Matlab, и все готово! Браво!