NSArray de problema de codificação de URL

votos
1

Então, eu tenho o seguinte código:

NSURL *baseURL = [NSURL URLWithString:@http://www.baseurltoanxmlpage.com];
NSURL *url = [NSURL URLWithString: @page.php relativeToURL:baseURL];
NSArray *array = [NSArray arrayWithContentsOfURL:url];

Se a página XML é a seguinte:

<array><dict><key>City</key><string>Montreal</string></dict></array>

A matriz retorna bem. No entanto, se o arquivo XML é a seguinte:

<array><dict><key>City</key><string>Montréal</string></dict></array>

A matriz retorna nulo. Eu acho que isso tem algo a ver com o caractere especial e. Como eu iria lidar com esses personagens? A página XML é gerado com PHP. utf8_encode () função faz com que o retorno matriz, mas então eu não sei como lidar com o caráter codificado e.

Aqui está a solução de trabalho:

NSString *stringArray = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSArray *array = [stringArray propertyList];

NSLog(stringArray);
NSLog(@%@, array);
NSLog([[[array objectAtIndex:0] valueForKey:@City] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);

Os primeiros log imprime a multa e. No segundo registro, ele é codificado e é impresso como \ U00e9. No 3º log, é decodificado e impresso como E (que é o que eu estava procurando).

Publicado 26/05/2009 em 06:18
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

Como você observou, você precisa retornar um UTF8- ou documento XML codificado em UTF16. Em seguida, fazer NSStringobjetos usando o stringByReplacingPercentEscapesUsingEncoding:método, usando a codificação relevante.

Respondeu 26/05/2009 em 06:30
fonte usuário

votos
1

NSString tem um método para retornar dados em codificação , dados lidos a partir do URL:

+ (ID) stringWithContentsOfURL: codificação: erro:

Olhe sob corda codificações seção para codificações possíveis para encontrar o caminho adequado.

Respondeu 26/05/2009 em 06:52
fonte usuário

votos
0

Olhando para o NSStringdocumentação para :propertyList, vemos:

  • Parses the receiver as a text representation of a property list, returning an NSString, NSData, NSArray, or NSDictionary object, according to the topmost element.

A lista de propriedades é um documento da Apple específicos do que armazena representações NSString, NSDictionary, NSArray, e outros tipos de núcleo em formato XML. Esses .plistarquivos são normalmente utilizados para armazenar preferências ou configurações do aplicativo.

Este documento lista de propriedades formato XML é codificado em UTF-8 , por padrão. Quando você liga o seu NSStringem um elemento lista de propriedades, que codifica a "é"personagem substitui-lo com o caractere UTF-8 Unicode"\U00e9" .

Respondeu 27/05/2009 em 17:29
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more