NSURLのエスケープ指定
Posted 12月 20th, 2009 by hippos
in
clippyのエイリアスに日本語ファイル名を指定すると読み込めないというバグがありました。自分では滅多に日本語ファイル名などというのは使わないので全然ノーマーク。
NSString:stringWithContentsOfURL:encoding:errorを使って読み込みする際、読み込むファイルのNSURLを単純に生成してました。
NSString *contents =
[NSString stringWithContentsOfURL:[NSURL URLWithString:filename]
encoding:NSUTF8StringEncoding error:&err];これだとNSURL:URLWithStringはnilを返しますが、なんのチェックもなしです。(^^ゞなんでもかでも一行に納めるとこういう場合がきつい。ちゃんと2ステップ踏んで、fileスキームもちゃんとエスケープしないとダメですね。
NSURL *url = [NSURL URLWithString:
[filename stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *contents =
[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&err];便利なものがあって助かりました。しかし、どうせならエスケープするというのをデフォルトにすればいいのになぁ。などと少し思ったりもします。
この記事のトラックバックURL:
http://hippos-lab.com/blog/trackback/347






Comments