0

Web から取得した xml ファイルに含まれるテキストを表示する必要があります。ファイルは次で始まります。

<?xml version="1.0" encoding="utf-8"?> ...

次に、次のように記述されたテキスト ノードがあります。

<text><![CDATA[E ancora, il fascino delle cittí del nord, che con la primavera conquistano ore luce, o di isole dove la Pasqua è un rito rimasto fedele nel tempo.Pasqua è un'occasione pe.. .]]></text>

これは utf-8 形式のテキストですか?

私はこれをすべて試しましたが、「Ã」を「à」に、「è」を「è」に置き換えることはできません。

text = ^the string from above^
NSData* data_text = [text dataUsingEncoding:NSUTF8StringEncoding];
NSString* text_c3 = [[NSString alloc] initWithBytes:[data_text bytes] length:[data_text length] encoding:NSUTF8StringEncoding];

const char* utfstring = "E ancora, il fascino delle città del nord,";// [text UTF8String];
NSString* text_c1 = [[NSString alloc] initWithUTF8String:utfstring];
NSString* text_converted = [NSString stringWithCString:utfstring encoding:NSUTF8StringEncoding];

助言がありますか?ありがとう。

4

3 に答える 3

0

...

このようにタグ付けを追加します

...

と使用

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

[request setValue:[NSString stringWithFormat:@"%d", [json_data length]] forHTTPHeaderField:@"Content-Length"]; [request setHTTPBody:[[jsonRequest stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding] dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]];

于 2012-04-16T06:53:47.193 に答える
0

あなたの質問から、CDATA 部分が適切に UTF-8 でエンコードされているかどうかを判断することはできません。エンコードされたデータはバイナリ データであるため、テキストではなく、バイナリ データ (つまり、16 進数表現) を投稿する必要があります。

さらに、すべてのコードサンプルは、正しいエンコーディングで保存されているソースコードファイルに依存していますが、これも質問からは判断できません。

組み込みのNSXMLParserクラスなど、適切な XML パーサーを使用して XML データを解析することをお勧めします。CDATA セクションに遭遇すると、デリゲートを呼び出し、元のエンコーディングが何であれ、テキストを UTF-8 エンコーディングのバイナリ データとして渡します。次に、それを文字列に変換できます。

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)cdataBlock
{
    NSString *text = [NSString stringWithUTF8String: [cdataBlock bytes]];

    // do something with the text...
}

また、必ず XML ファイルをバイナリ データとして取得し、それを XML データとして XML パーサーに渡します。そうしないと、不要なデコードとエンコードが行われ、エンコードが破損する可能性があります。

于 2012-04-15T13:25:47.523 に答える
0

NSURL *url = [NSURL URLWithString:@"http://www.yourURL.com"];

//NSString *jsonRequest = [NSString stringWithFormat:@"&json_data=%@",[[NSString stringWithFormat:@"{\"createInvoice\":{\"client_id\":\"%@\",\"address\":\"\",\"invoice_title\":\"%@\",\"number\":\"\",\"date\":\"%@\",\"due_date\":\"%@\",\"late_fee\":\"\",\"schedule_date\":\"%@\",\"po_number\":\"\",\"status\":\"paid\",\"notes\":\"invoice notes\",\"terms\":\"invoice terms\",\"items\":[{\"name\":\"Test4\",\"type\":\"Product\",\"description\":\"\",\"unit_cost\":\"15\",\"quantity\":\"100\",\"discount\":\"10\",\"discount_type\":\"Percent\",\"tax1_name\":\"\",\"tax1_type\":\"\",\"tax2_name\":\"\",\"tax2_type\":\"\",\"tax1_percent\":\"\",\"tax2_percent\":\"\"}]}}",selected_Client_ID,invoiceTitleTxtFld.text,invoiveDateTxtFld.text,invoiceDueDateTxtFld.text,scheduleOnTxtFld.text] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];



NSString *jsonRequest = [NSString stringWithFormat:@"&json_data=%@",[[NSString stringWithFormat:@"{\"updateInvoice\":{\"invoice_id\":\"%@\",\"client_id\":\"60105\",\"address\":\"ABS\",\"invoice_title\": \"%@\",\"number\":\"inv-7774 new\",\"date\":\"2012-03-30\",\"due_date\":\"2012-04-30\",\"late_fee\":\"\",\"schedule_date\":\"2012-03-31\",\"po_number\":\"PO-7770\",\"status\":\"paid\",\"notes\":\"invoice notes\",\"terms\":\"invoice terms\",\"items\":[{\"name\":\"Test4\",\"type\":\"Product\",\"description\":\"Test4 desc\",\"unit_cost\":\"15\",\"quantity\":\"100\",\"discount\":\"10\",\"discount_type\":\"Percent\",\"tax1_name\":\"\",\"tax1_type\":\"\",\"tax2_name\":\"\",\"tax2_type\":\"\",\"tax1_percent\":\"\",\"tax2_percent\":\"\"}]}}",delegate.invoice_ID,invoiceTitleTxtFld.text] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];


NSData *json_data = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];


[request setHTTPMethod:@"POST"];
[request setHTTPBody: json_data];
NSLog(@"%@",json_data);
//[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
//[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [json_data length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:[[jsonRequest stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]
                      dataUsingEncoding:NSUTF8StringEncoding 
                      allowLossyConversion:YES]];

//  [NSURLConnection connectionWithRequest:[request autorelease] delegate:self];

NSUrlsConnection *conn_InvEdit = [[NSURLConnection alloc] initWithRequest:request delegate:self];

// Successful connection.
if (conn_InvEdit) {

    // [self initSpinner];
    // [self spinBegin];

    NSMutableData *data = [[NSMutableData alloc] init];
    self.receivedData=data;
    [data release];
} 
// Unsuccessful connection.
else {

}  
// Clean up
[url release];
[request release];
// Close keypad.

Try with this code, If you still have any problem then send me your complete question at  akram.khan@mail.vinove.com. I'll send you sample app with solution.
于 2012-04-16T06:28:13.477 に答える