日本語を含むパス(URL)を使う時の注意

パス(URL)を生成する場合にNSURL URLWithStringを使うが、
日本語を含むパス(url)を使用する場合には以下の理由で、インスタンスが生成されないため、nilが格納される。

※理由は、+[NSURL URLWithString:]を使ってファイルパスからURLを生成する際、RFC2396を満たさない文字が含まれているとインスタンスが生成されないためです。

【参考】
日本語を含むパスを使う時の注意 | なんてこったいブログ - http://nantekottai.com/2011/12/10/japanese-path-issue/

【bad】

NSString* path = @"/Users/foo/あいうえお.wav";
NSURL* badPattern = [NSURL URLWithString:path]; //nilになる

【good】

NSString* path = @"/Users/foo/あいうえお.wav";
NSURL* goodPattern = [NSURL URLWithString:
[path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
// Encodingの種類は適宜。

以上、年末に人生で初めて凶を引いた堀でした。