6

NSData として html ファイルを取得しており、それを解析して情報を抽出する必要があります。私のアプローチは、それをUTF8エンコーディングでNSStringに変換することでした(htmlには英語以外の文字、たとえばロシア語が含まれています)-失敗しました。私はそのようなものを使用しました:

NSString *respData = [NSString stringWithUTF8String:[theData bytes]];

しかし、それは nil を返しました。

実際に機能した唯一のことは

[NSString stringWithCString:[theData bytes] length:[theData length]];

ただし、たとえばロシア語の文字に遭遇すると、ジブリッシュが返されます。

それから私の次のアプローチは、データのバイト配列を解析し、必要なバイトを抽出し、何らかの方法でそれらを NSString に変換することでした。私はそのようなことを試しました:

-(NSString *)UTF8StringFromData:(NSData *)theData{
 Byte *arr = [theData bytes];
 NSUInteger begin1 = [self findIndexOf:@"<li>" bArr:arr size:[theData length]]+4;
 NSUInteger end1 = [self findIndexOf:@"</li></ol>" bArr:arr size:[theData length]];
 Byte *arr1 = (Byte *)malloc(sizeof(Byte)*((end1-begin1+1)));
 int j = 0;
 for (int i = begin1; i < end1; i++){
  arr1[j] = arr[i];
  j++;
 }
 arr1[j]='\0';
 NSData *temp = [NSData dataWithBytes:arr1 length:j];
 return [[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding];
}
4

3 に答える 3

11

NSURLResponse*応答とNSData*データを取得したと仮定します。

CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef) [response textEncodingName]);
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(cfEncoding);

NSString* string = [[NSString alloc] initWithData:data encoding:encoding];

// Do stuff here..

[string release];
于 2009-10-14T14:43:32.927 に答える
0

まず第一に、ここに私のコードがあります

-(NSString *)UTF8StringFromData:(NSData *)theData{
    Byte *arr = [theData bytes];
    NSUInteger begin1 = [self findIndexOf:@"<li>" bArr:arr size:[theData length]]+4;
    NSUInteger end1 = [self findIndexOf:@"</li></ol>" bArr:arr size:[theData length]];
    Byte *arr1 = (Byte *)malloc(sizeof(Byte)*((end1-begin1+1)));
    int j = 0;
    for (int i = begin1; i < end1; i++){
        arr1[j] = arr[i];
        j++;
    }
    arr1[j]='\0';
    NSData *temp = [NSData dataWithBytes:arr1 length:j];
    return [[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding];  
}

2 つ目は、Web からファイルの内容を取得しているため、何も確信が持てません。参考になればグーグル翻訳のhtmlです...

于 2009-09-11T08:58:35.680 に答える