Символы Unicode в исходных файлах MATLAB
Я хотел бы использовать символы Unicode в комментариях в исходном файле MATLAB, Кажется, это работает, когда я пишу текст; однако, если я закрою файл и перезагружу его, "необычные" символы превратятся в вопросительные знаки. Я предполагаю, что MATLAB сохраняет файл как ASCII.
Есть ли способ сказать MATLAB вместо UTF-8?
Ответы
Ответ 1
Как процесс MATLAB использует настройки локали показывает, как установить кодировку для разных платформ. Используйте
feature('DefaultCharacterSet')
Вы можете узнать больше об этой недокументированной функции здесь. См. Также Matlab Central thread для других параметров.
Ответ 2
Согласно http://www.mathworks.de/matlabcentral/newsreader/view_thread/238995
feature('DefaultCharacterSet', 'UTF8')
изменит кодировку на UTF-8. Вы можете поместить строку выше в файл startup.m.
Ответ 3
Только для 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, это не сработает.
Надеюсь, это поможет!
Ответ 4
Для пользователей Mac OS решение Jendker действительно помогает !!! Большое спасибо в первую очередь.
Напомним здесь.
-
Проверьте язык по умолчанию в Matlab, введя в командной getenv('LANG')
. Мой вернулся en_US.ISO8859-1
.
-
В каталоге приложения найдите Matlab, покажите содержимое его пакета. Перейдите в bin
, откройте lcdata.xml
как администратор, найдите соответствующее имя xpg_name
, в моем случае en_US.ISO8859-1
. Измените encoding
в той же строке на UTF-8
. Сохрани это.
-
Перезапустите Matlab, и все готово!
Ответ 5
Представленное здесь решение работало для меня на Windows с R2018a.
Если ссылка не работает: идея состоит в том, чтобы использовать файл matlabroot/bin/lcdata.xml
для настройки псевдонима для имени кодировки (некоторые пояснения можно найти в этом самом файле в комментариях):
<codeset>
<encoding name="UTF-8">
<encoding_alias name="windows-1252" />
</encoding>
</codeset>
Вы бы использовали свое собственное значение вместо windows-1252
, в настоящее время используемую кодировку можно получить, запустив feature('locale')
.
Хотя, если вы используете символы Юникода в комментариях справки, браузер справки не распознает их, а также выводит окно консоли.