2

file.xml を解析するために NSXMLParse を使用しています。それは機能しますが、この file.xml 内のテキストを抽出すると、いくつかの単語が切り取られます。これはエンコーディングの問題だと思います。

たとえば、私の file.xml の一部:

<?xml version="1.0" encoding="UTF-8" ?> 
<book>
<titulo>Síndrome de Tietê</titulo> 
<pagina numero="1">
<linha numero="1">A luz forte do sol lá fora fazia um grande contraste com o escuro do cômodo.</linha> 
<linha numero="2">Poucas pessoas. Móveis rústicos e panelas penduradas, com teias de aranha. Gente magra.</linha> 
</pagina>
</book>

したがって、「」を解析して抽出すると、コンテンツは次のようになります。

INSTEAD OF 'A luz forte do sol lá fora fazia um grande contraste com o escuro do comodo'

なぜだかわかりませんが、「á」という言葉が出てきたときにフレーズをカットしています。すべてのタグで発生しており、常に「á,ó,ô,é...」のようなものが内部に含まれています。

このため、XML ファイルからの「エンコード」を行う必要があるかどうか疑問に思っています。

私のXMLファイルをロードするための私のコード:

-(id)loadXMLByURL:(NSString *)fileName:(NSString *)extName {
    NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extName];
    NSData *xmlData = [NSData dataWithContentsOfFile:xmlFilePath];
    xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
    xmlParser.delegate = self;
    [xmlParser parse];
    return self;
}

上記の関数を呼び出す:

xmlCon = [[XMLControl alloc] loadXMLByURL:@"geracao":@"xml"];

何か案は?

4

1 に答える 1

0

最初に確認することは、XML ファイルの先頭で宣言されているエンコーディングが実際にファイルがエンコードされているものであるかどうかです。チェックする昔ながらの方法は、16 進ダンプまたは 8 進ダンプの出力を見て、その文字を確認することです。などの í は、予想される 2 バイト シーケンスで表されます。簡単にチェックする方法は、文字エンコーディングの概念を理解するエディタ (ほとんどすべてのプログラミング エディタ) でファイルを見て、ファイルがどのエンコーディングで記​​述されているかを確認することです。宣言と一致しない場合、XML パーサーは誤って解釈します。ファイル。

于 2011-07-07T14:18:49.993 に答える