Символы Юникода в исходных файлах MATLAB - PullRequest
25 голосов
/ 13 февраля 2011

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

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

Ответы [ 5 ]

19 голосов
/ 04 октября 2011

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

feature('DefaultCharacterSet', 'UTF8')

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

7 голосов
/ 13 февраля 2011

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

feature('DefaultCharacterSet')

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

2 голосов
/ 31 мая 2017

Только для 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, выбрав Показать содержимое пакета, как на скриншоте (здесь на немецком языке)

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, это не будет работать.

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

0 голосов
/ 12 апреля 2018

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

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

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

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

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

0 голосов
/ 06 апреля 2018

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

Резюме здесь.

  1. Проверьте язык по умолчанию в Matlab, введя в командном окне getenv('LANG').Моя вернулась en_US.ISO8859-1.

  2. В каталоге приложений найдите Matlab, покажите содержимое его пакета.Перейдите на bin, откройте lcdata.xml в качестве администратора, найдите соответствующий xpg_name, в моем случае en_US.ISO8859-1.Измените encoding в той же строке на UTF-8.Сохраните его.

  3. Перезапустите Matlab, и все готово!

...