RHEL(LINUX)でSJISを利用!
Red Hat Enterprise LinuxでSJISを使おうとすると、警告が出ます。# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS
character map `SHIFT_JIS'' is not ASCII compatible, locale not ISO
compliant
ご存知のように、LinuxでSJISは通常サポートされていません。
が、実は、CP932を指定した場合は、警告が表示されない。
参考:http://blog.tomoattori.info/article/152612890.html
というのも、単に「SJIS」はサポートされないというのは、奥が深く、
例えば、同じSJIS系の正統Shift JISとCP932(MSの拡張版)とでも扱いが違う。
[日本 OSS 推進フォーラム]という何となく権威がありそうなところが出している
『Linux マイグレーションガイド』の中で、
特に、正統 Shift JIS ロケール sjis では、 0x5C=U+00A5 というマッピングのために、オープン系プログラム(C言語、Java など)の動作が保証されない。cp932 などでは問題ない。
とも記載されており、CP932だと、問題が少ないことがわかる。
あと、gcc(C言語)においても、コンパイルの際は、
-finput-charset=cp932 -fexec-charset=cp932
のオプションを指定するので、やっぱりCP932がよい。
というわけで、SJISを使うなら、CP932を使いましょうということですね。
というか、わざわざ正統なSJISを使うほうが問題多い気が、、、SJISを使いたいという場合は、正統なSJISではなくCP932を使っているほうが多そう。
2018年11月03日