0

実装しようとしている次のエンコーディング修正でクラッシュします。

  // encoding fix
    NSString *correctStringTitle = [NSString stringWithCString:[[item objectForKey:@"main_tag"] cStringUsingEncoding:NSISOLatin1StringEncoding] encoding:NSUTF8StringEncoding];

    cell.titleLabel.text = [correctStringTitle capitalizedString];

私のクラッシュログ出力は次のように述べています:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSString stringWithCString:encoding:]: NULL cString'

助けてくれてありがとう

4

2 に答える 2

2

正しい結果を得るには、二重の変換が必要だと考えているようです。cStringUsingEncoding:NSISOLatin1StringEncodingそうではありませんし、可能でもありません (これがreturnの呼び出しの理由NULLです)。この部分を省略して、correctStringTitle直接割り当てます。

于 2013-02-03T15:02:51.713 に答える
0

HTMLからテキストを取得しようとしているときに、イタリア語のアクセント付き文字で同じ問題が発生しました。cStringUsingEncoding:NSISOLatin1StringEncoding返される状況を回避するための私の解決策NULLは、使用するデータからHTMLを取得するときに次のことを保証することです。

[[NSString alloc] initWithData:self.responseData encoding:NSISOLatin1StringEncoding]

そしてそうではない

encoding:NSUTF8StringEncoding
于 2013-07-02T10:39:10.190 に答える