web-dev-qa-db-fra.com

Caractères Unicode dans les fichiers source MATLAB

Je voudrais utiliser Unicode caractères dans les commentaires d'un fichier MATLAB source. Cela semble fonctionner lorsque j'écris le texte. Cependant, si je ferme le fichier et le recharge, des caractères "inhabituels" ont été transformés en points d'interrogation. J'imagine que MATLAB enregistre le fichier au format ASCII.

Y a-t-il un moyen de dire à MATLAB d'utiliser UTF-8 à la place?

25
LaC

Comment le processus MATLAB utilise les paramètres régionaux montre comment définir le codage pour différentes plates-formes. Utilisation 

feature('DefaultCharacterSet')

Vous pouvez en savoir plus sur cette fonction non documentée ici . Voir aussi ceci Filetage central Matlab pour d'autres options.

7
zellus

Selon http://www.mathworks.de/matlabcentral/newsreader/view_thread/238995

feature('DefaultCharacterSet', 'UTF8')

changera l'encodage en UTF-8. Vous pouvez mettre la ligne ci-dessus dans votre fichier startup.m.

19
Gabra

Mac OSX seulement!

Comme j'ai trouvé la solution qui a fonctionné dans mon cas, je veux la partager.

Mathworks conseille ici d’utiliser slCharacterEncoding(encoding) afin de modifier l’encodage à votre guise, mais cela ne résout pas le problème sous OSX de la même manière que feature('DefaultCharacterSet') dans la réponse acceptée ne le fait pas. Ce qui m'a aidé à obtenir le jeu de codage UTF-8 pour ouvrir et enregistrer les fichiers .m, c'est le lien suivant sur les réponses MATLAB: https://www.mathworks.com/matlabcentral/answers/12422-macosx problème de codage

Matlab semble ignorer toute valeur définie dans slCharacterEncoding(encoding) ou feature('DefaultCharacterSet') mais utilise la région définie dans les Préférences Système -> Langue et région. Après avoir vérifié quelle région est sélectionnée dans notre cas, il est possible de définir le codage réel dans le fichier de configuration caché dans

 $matlabroot/bin/lcdata.xml

Ce répertoire peut être ouvert en accédant aux applications et en cliquant avec le bouton droit de la souris sur Matlab en sélectionnant Afficher le contenu du paquet comme sur la capture d'écran (ici en allemand).

 Package Contents

Par exemple, pour ISO-8859-1 par défaut, il est possible de l’ajuster en modifiant la ligne correspondante dans le fichier 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">

Si la région sélectionnée n'est pas présente dans le fichier lcdata.xml, cela ne fonctionnera pas.

J'espère que cela t'aides!

2
user6681767

La solution fournie ici a fonctionné pour moi sur Windows avec R2018a.

Dans le cas où le lien ne fonctionne pas: l'idée est d'utiliser le fichier matlabroot/bin/lcdata.xml pour configurer un alias pour le nom d'encodage (des explications peuvent être trouvées dans ce fichier même dans les commentaires):

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

Vous voudriez utiliser votre propre valeur au lieu de windows-1252, le codage actuellement utilisé peut être obtenu en exécutant feature('locale').

Toutefois, si vous utilisez des caractères Unicode dans les commentaires d'aide, le navigateur d'aide ne les reconnaît pas, ainsi que la sortie de la fenêtre de la console.

0
scrutari

Pour les utilisateurs de Mac, la solution de Jendker aide vraiment !!! Merci beaucoup d'abord.

Assurez-vous de vérifier la langue par défaut dans Matlab en

getenv('LANG')

Ensuite, allez à lcdata.xml, localisez le xpg_name correspondant et remplacez encoding par UTF-8.

Maintenant, redémarrez Matlab, et tout est fait! Bravo!

0
Dong Justin