it-swarm-ru.tech

Символы Юникода в исходных файлах MATLAB

Я хотел бы использовать Unicode символы в комментариях в MATLAB исходном файле. Кажется, это работает, когда я пишу текст; однако, если я закрою файл и перезагрузлю его, «необычные» символы будут превращены в знаки вопроса. Я предполагаю, что MATLAB сохраняет файл как ASCII.

Есть ли способ сказать MATLAB использовать UTF-8 вместо?

25
LaC

Как процесс MATLAB использует настройки локали показывает, как установить кодировку для разных платформ. использование 

feature('DefaultCharacterSet')

Вы можете прочитать больше об этой недокументированной функции здесь . Смотрите также это Matlab Central thread для других опций.

7
zellus

Согласно http://www.mathworks.de/matlabcentral/newsreader/view_thread/238995

feature('DefaultCharacterSet', 'UTF8')

изменит кодировку на UTF-8. Вы можете поместить строку выше в вашем файле startup.m.

19
Gabra

Только Mac OSX!

Как я нашел решение, которое сработало в моем случае, я хочу поделиться им.

Mathworks советует здесь использовать slCharacterEncoding(encoding), чтобы изменить кодировку по желанию, но для OSX это не решает проблему именно так, как feature('DefaultCharacterSet') в принятом ответе не делает этого. Что помогло мне получить набор кодировки UTF-8 для открытия и сохранения файлов .m, так это следующая ссылка на ответы MATLAB: https://www.mathworks.com/matlabcentral/answers/12422-macosx-encoding -проблема

Кажется, что Matlab игнорирует любое значение, установленное в slCharacterEncoding(encoding) или feature('DefaultCharacterSet'), но использует регион, заданный в Системных настройках -> Язык и регион. После проверки того, какой регион выбран в нашем случае, можно определить фактическую кодировку в скрытом файле конфигурации в

 $matlabroot/bin/lcdata.xml

Этот каталог можно открыть, перейдя в Приложения и щелкнув правой кнопкой мыши Matlab, выбрав Показать содержимое пакета, как на скриншоте (здесь на немецком языке)

 Package Contents

Например, для немецкого 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, это не будет работать.

Надеюсь это поможет!

2
user6681767

Решение, предоставленное здесь работало для меня на Windows с R2018a.

В случае, если ссылка не работает: идея состоит в том, чтобы использовать файл matlabroot/bin/lcdata.xml для настройки псевдонима для имени кодировки (некоторые пояснения можно найти в этом самом файле в комментариях):

<codeset>
  <encoding name="UTF-8">
   <encoding_alias name="windows-1252" />
  </encoding>
</codeset>

Вы бы использовали свое собственное значение вместо windows-1252, в настоящее время используемую кодировку можно получить, запустив feature('locale').

Хотя, если вы используете символы Юникода в комментариях справки, браузер справки не распознает их, а также выводит окно консоли.

0
scrutari

Для пользователей Mac решение Jendker действительно помогает !!! Большое спасибо в первую очередь.

Не забудьте проверить язык по умолчанию в Matlab

getenv('LANG')

Затем перейдите к lcdata.xml, найдите соответствующий xpg_name и измените encoding на UTF-8.

Теперь перезапустите Matlab, и все готово! Браво!

0
Dong Justin