「Xamarin.MacからHFS+上のファイル名を取得すると文字コードがおかしい」の版間の差分

ページの作成:「Xamarin.MacからHFS+上のファイル名を取得すると文字コードがおかしい macOSが使っているHFS+の文字コードは「NFDというUTF-8によく...」
 
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
Xamarin.MacからHFS+上のファイル名を取得すると文字コードがおかしい
[[Xamarin.Mac]]から[[HFS+]]上のファイル名を取得すると[[文字コード]]がおかしい。
[[Mono]]のコンソールアプリでも同様。


macOSが使っているHFS+の文字コードは「NFDというUTF-8によく似た独自仕様」であるために発生するらしい。マジでクソ仕様すぎるだろ…
ググると原因はmacOSが使っているHFS+の文字コードは「NFDというUTF-8によく似た独自仕様」であるために発生するらしい。マジでクソ仕様すぎるだろ…


なんと.NETでは標準でこれらを判別と変換する機能が用意されている。ググるとrubyなんかでも標準で同様の機能があるとのことなので、このmacOSのクソ仕様はほとんどの言語で考慮されているらしい。
なんと.NETでは標準でこれらを判別と変換する機能が用意されている。ググると[[ruby]]なんかでも標準で同様の機能があるとのことなので、このmacOSのクソ仕様はほとんどの言語で考慮されているらしい。


IsNormalizedメソッドで判別
IsNormalizedメソッドで判別
12行目: 13行目:


== 備考 ==
== 備考 ==
この記事の.NETとは関係ないが
この記事の[[.NET]]とは関係ないが
* macOS標準搭載の「rsync」はNFD非対応。
* [[macOS]]標準搭載の「[[rsync]]」はNFD非対応。[[Linux]]なんかに送信すると残念なことになる。
* Homebrew版の「rsync」はNFD対応。
* [[Homebrew]]版の「[[rsync]]」はNFD対応。


== 関連項目 ==
== 関連項目 ==
* [[NFD (Normalization Form Canonical Decompression)]]
* [[NFD (Normalization Form Canonical Decompression)]]
[[category: Xamarin.Mac]]