「Xamarin.MacからHFS+上のファイル名を取得すると文字コードがおかしい」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「Xamarin.MacからHFS+上のファイル名を取得すると文字コードがおかしい macOSが使っているHFS+の文字コードは「NFDというUTF-8によく...」) |
(→備考) |
||
12行目: | 12行目: | ||
== 備考 == | == 備考 == | ||
− | この記事の. | + | この記事の[[.NET]]とは関係ないが |
− | * | + | * [[macOS]]標準搭載の「[[rsync]]」はNFD非対応。[[Linux]]なんかに送信すると残念なことになる。 |
− | * | + | * [[Homebrew]]版の「[[rsync]]」はNFD対応。 |
== 関連項目 == | == 関連項目 == | ||
* [[NFD (Normalization Form Canonical Decompression)]] | * [[NFD (Normalization Form Canonical Decompression)]] |
2018年3月7日 (水) 02:40時点における版
Xamarin.MacからHFS+上のファイル名を取得すると文字コードがおかしい
macOSが使っているHFS+の文字コードは「NFDというUTF-8によく似た独自仕様」であるために発生するらしい。マジでクソ仕様すぎるだろ…
なんと.NETでは標準でこれらを判別と変換する機能が用意されている。ググるとrubyなんかでも標準で同様の機能があるとのことなので、このmacOSのクソ仕様はほとんどの言語で考慮されているらしい。
IsNormalizedメソッドで判別
var isNfc = Path.GetFileNameWithoutExtension(file).IsNormalized();
Normalizeメソッドで変換
var name = Path.GetFileNameWithoutExtension(file).Normalize();
備考
この記事の.NETとは関係ないが