macOS で作られたファイルの濁点半濁点問題。
ファイル名がUTF-8といえども、mac は濁点を合成文字として扱うので、Linuxで読むと面倒が起きる。
sudo convmv -f utf-8 -t utf-8 -r --notest --nfc ./*
ディレクトリ内部を再帰的に処理される。 find と組み合わせなくていいのが便利。
逆に言えば、内部全部が対象なので、うっかりしないように注意。
rsync 時にまとめてやる
rsync -a --iconv=utf-8-mac,utf-8
rsync 時にまとめてやっておくと便利だと思われる。
ユニコード正規化
ユニコードで、macOSの日本語はNFDの亜種が使われている。
たとえば、macで作った<パ>は2文字で構成されている。
"パ".each_codepoint{|e| p e.to_s(16) }.map "30cf" "309a"
文字コードから文字のコードポイントを取得すると、2文字で構成されていることがわかる。
Windowsで作った「パ」は1文字で構成されている。
"パ".each_codepoint{|e| p e.to_s(16) } "30d1"
この文字の違いは、ブラウザなど対応したソフトウェアで表示自体は同じだし、ユニコードとして特に問題がないので間違いではない。
けど、非対応なソフトウェアで表示すると、表示が乱れる。カーソル位置がおかしくなる
例
特に問題がでてくるのがWindowsのターミナルである。本当に不便なのです。 個人的な意見を言えば、日本語の取り扱いは、日本政府による規制と標準化が求められると思います。