own.2009-07-30Macのバックスラッシュと円マークの違いの洗礼を受けた知識として知ってはいたけど、JISキーボードを使ってないせいもあっていままでハマらなかったが、今日ついにMacのバックスラッシュと円マークの違いの洗礼を受けた。細かいことはここなどに詳しい。未定これには複雑な事情があります。Macでのクリップボードとのやりとりには、UTF-16またはMacJapaneseが使われます。Emacsの場合はMacJapaneseです。MacJapaneseとUnicodeでは、次のような変換が行われます。SIGN一方、Emacsはクリップボードと内部コードとの変換をclipboard-coding-systemに従って行います。ECCSでは'sjis-macに設定されており、これはCRで改行された'japanese-sjisを意味します。このため、次のような文字化けが発生します。SOLIDUSそんなわけで、Emacsの動作がMac的に間違っているのが直接の原因です。MacJapaneseを扱えるcoding-systemを作るか、クリップボードとのやりとりにUnicodeを使えば「正しく」なります。Unicode化は比較的簡単で、トラブルもMacOSに責任転嫁できますが、またしてもローカルパッチを当てることになります。coding-sysemを作るのはelispだけで出来ますが、簡単ではなさそうです。そもそも、TextEditはECCSの事情にそぐわない面があります。JIS)」ならJISの「\」になります。中にスクリプトが書き込むデータが改行されなかった。実験してみたところ、クリップボードにコピーした時点で化ける?という言い方は不適切か、バックスラッシュが円マークに変換されてしまっていた。上のような事情について、改めて理解を深めた、という次第。中の円マークをバックスラッシュに手で書き直してやれば普通に動いた。