Macアプリケーションを開発していて
ファイル名およびフォルダ名に濁点/半濁点が含まれている場合、
Macの中で完結するのであれば、特になにも気にする必要はほぼなし。

ただ、サーバからデータをダウンロードして
そのダウンロードしたパス情報をログサーバにHTTPで送ろうと思ったら、
濁点系が含まれているとPerlのEncodeで引っかかってしまった。
Macのファイル名の文字コードはNFD(MAC-UTF-8)と呼ばれているらしい
LinuxやWindowsはNFS(UTF-8)らしい
#知らなかった。。。

サーバ側のプログラムを書き換ればいいのかもしれないが、
本番で長年動いていたプログラム。
なかなか更新できない。。。

なので、サーバに送信する直前にNFCに変換してあげる必要がある。
その際にしようするメソッドがこちら

  1.  
  2. NSString * sendStr = [ filePath precomposedStringWithCanonicalMapping ];
  3.  

これでサーバ側のエラーがなくなり、正しくデータを格納できた

Leave a Reply