以下の手法はかなりバッドノウハウ的であるので,予期せぬ問題が発生する場合があります。ファイルのバックアップをとってからやりましょう。
---------------------------------------------------
MATLABで日本語で書いたコメントを,英語の環境に送り(英語のWindowsのMATLAB),それを日本語のMATLABで再度編集すると日本語が壊れることがあると思います。
これはShift_JIS特有の問題です。
Shift_JIS
特にGoogleDriveやGithubなどで共同作業するときに問題になります。
ソースコードをUTF-8で開くためには,jvmEncodingをUTF-8に変更する必要があります。
1. 自分の設定を確かめる
feature('locale')
- Shift_JISの場合
ctype: 'ja_JP.Shift_JIS'
collate: 'ja_JP.Shift_JIS'
time: 'ja_JP.Shift_JIS'
numeric: 'en_US_POSIX.Shift_JIS'
monetary: 'ja_JP.Shift_JIS'
messages: 'ja_JP.Shift_JIS'
encoding: 'Shift_JIS'
terminalEncoding: 'Shift_JIS'
jvmEncoding: 'MS932'
status: 'MathWorks locale management system
initialized.'
warning: ''
2. 修正する
参考:
https://jp.mathworks.com/matlabcentral/answers/280988-how-do-i-get-my-matlab-editor-to-read-utf-8-characters-utf-8-characters-in-blank-squares-in-editors
C:\Program Files\MATLAB\R2015b\bin\lcdata.xml (例)
以下を編集
<encoding name="Shift_JIS" jvm_encoding="MS932">
↓
<encoding name="Shift_JIS" jvm_encoding="utf8">
3. 確認する
feature('locale')
ctype: 'ja_JP.Shift_JIS'
collate: 'ja_JP.Shift_JIS'
time: 'ja_JP.Shift_JIS'
numeric: 'en_US_POSIX.Shift_JIS'
monetary: 'ja_JP.Shift_JIS'
messages: 'ja_JP.Shift_JIS'
encoding: 'Shift_JIS'
terminalEncoding: 'Shift_JIS'
jvmEncoding: 'utf8'
status: 'MathWorks locale management system
initialized.'
warning: ''
4. ソースコードのエンコーディングの変更
逆に,自分のShift_JISで書かれたソースコードが文字化けしてしまっています。
そのため,KanjiTranslatorなどのソフトで文字コードを一括変換する必要があります。
http://www.kashim.com/kanjitranslator/
・補足
Github Desktop で文字化けしていたソースコードも見えるようになっているはずです。
---------------------------------------------------
上記について,SJISやMS932のエンコーディングのaliasを書き換えることで全てをUTF-8にすることができますが,そうすると
plot(1:2, 1:3);
など長さの違うベクトルでplotしようとしたときに
エラー: plot
ベクトルは同じ長さでなければなりません。
とならず,MATLABを道連れにしてエラーメッセージが出ずに強制終了する問題がありました。上記の方法ではこの問題はりません。
もっと賢い方法があれば知りたいです。Windowsのlocaleを変えるとか?