3

このような NSString があります。

シトロエン

Citron の ASCII です。したがって、この NSString を次のような正しい形式に変換しようとする努力の中で

string = [dict valueForKey:@"WIGMIGDIGFIG"]; //myBadString
NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];
//sent it back to NSData with ACII encoding
NSString* mystring = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// put it back into a NSString but with the correct encoding
NSLog(@"%@", mystring);// check result.

したがって、これをループで実行して、辞書の配列にあるすべての文字列をチェックし、ログに返されるすべての文字列が、Citroën を含む 1 つの文字列を受け入れます。それはログから除外されているだけです。

更新された質問、私がやろうとしていることを誰かが知っていますか? それが可能かどうかさえわかりません。私がやりたいのは、既に作成されている文字列を修正することだけですが、明らかに間違ってエンコードされています。

4

1 に答える 1

1

私はちょうどあなたの例を試しましたが、問題は次の行にあります:

NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];

INSLogの内容がdata返さnilれる場合。これはおそらく、「Citroën」が最初から有効な ASCII 文字列ではないことを意味します。NSUTF8StringEncoding代わりに使用すると、dataオブジェクトにデータが取得されます。

私の理解ではnil、指定された文字列エンコーディングを使用して文字列を変換できない場合、文字列変換メソッドが返されるということです。

于 2012-10-24T01:56:27.813 に答える