Help us understand the problem. What is going on with this article?

Macでファイル名をコピペすると濁点と半濁点がおかしくなる

More than 1 year has passed since last update.

2018-01-04 追記

PDFからコピペした時など、エディタで普通に変換したくなって試していたところ、もっとシンプルにできました。
「選択されたテキストを出力で置き換える」が便利です。

Kobito.232f9r.png

概要

Macでファイル名をコピペすると濁点と半濁点がおかしくなる。("パ" -> "ハ" + "半濁点"の2文字になる)
Sublime Textだと表示がおかしいので気づくことができるけど、Atomだと表示はおかしくならないので気づけない。困った。

Kobito.yC6wid.png

Menubar_と_パン_と_Macでファイル名をコピペすると濁点と半濁点がおかしくなる.png

Menubar_と_untitled_-_Atom_と_Settings_-__Users_matsushimadaisuke_src_github_com_miraitechno_pocketkarte_pocketkarte-mdb3_-_Atom.png

原因

MacOSのファイルシステムであるHFS+が使用している、UTF-8の正規化方法が「NFD」というもので、2文字に分けて正規化されてしまうことが原因。
参考
* UTF-8にもいろいろある - ザリガニが見ていた...。
* MacOSX - Mac OS X の NFD 問題での対策諸々 - Qiita

対策

nkfで--ic=UTF8-MACオプションを指定することで、NFD -> NFCに変換できる。

$ echo "コピペしたもの" | od -tx1c
0000000    e3  82  b3  e3  83  92  e3  82  9a  e3  83  98  e3  82  9a  e3
          コ  **  ****  ****  ****  ****  **  し
0000020    81  97  e3  81  9f  e3  82  82  e3  81  ae  0a
          **  ****  ****  ****  **  \n
0000034

$ echo "コピペしたもの" | nkf --ic=UTF8-MAC | od -tx1c
0000000    e3  82  b3  e3  83  94  e3  83  9a  e3  81  97  e3  81  9f  e3
          コ  **  ****  ****  ****  ****  **  も
0000020    82  82  e3  81  ae  0a
          **  ****  **  \n
0000026

よし、Automatorでサービスを作ってショートカットキーを当てよう。

Automatorで新規サービスを作成する。

Kobito.9lZVy1.png

nkfに-wオプションをつけないと標準入力に渡されてこなかった。なぜ?

Kobito.5cNnPH.png

システム環境設定 -> キーボードで作成したサービスのショートカットを設定する

Kobito.eYPu1g.png

$ echo "/Users/matsushimadaisuke/Desktop/コピペしたもの /Users/matsushimadaisuke/Desktop/コピペしたもの" | od -tx1c
0000000    2f  55  73  65  72  73  2f  6d  61  74  73  75  73  68  69  6d
           /   U   s   e   r   s   /   m   a   t   s   u   s   h   i   m
0000020    61  64  61  69  73  75  6b  65  2f  44  65  73  6b  74  6f  70
           a   d   a   i   s   u   k   e   /   D   e   s   k   t   o   p
0000040    2f  e3  82  b3  e3  83  94  e3  83  9a  e3  81  97  e3  81  9f
           /  コ  **  ****  ****  ****  ****  **
0000060    e3  82  82  e3  81  ae  20  2f  55  73  65  72  73  2f  6d  61
          も  **  ****  **       /   U   s   e   r   s   /   m   a
0000100    74  73  75  73  68  69  6d  61  64  61  69  73  75  6b  65  2f
           t   s   u   s   h   i   m   a   d   a   i   s   u   k   e   /
0000120    44  65  73  6b  74  6f  70  2f  e3  82  b3  e3  83  94  e3  83
           D   e   s   k   t   o   p   /  コ  **  ****  ****
0000140    9a  e3  81  97  e3  81  9f  e3  82  82  e3  81  ae  0a
          ****  ****  ****  ****  **  \n
0000156

あれ?うまくいってるけど、2回コピーされてる、、、

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした