Pergunta

Na rede entre as versões do iPhone e da área de trabalho do nosso aplicativo, o iPhone envia o nome do dispositivo para uso na área de trabalho. O problema é que alguns dos testadores beta têm tildes (`) em seus nomes de dispositivos. Por alguma razão, quando isso está no nome do dispositivo, evita que o soquete envie os dados reais da string.

Eu tentei simplesmente limpar o nome do dispositivo antes de enviá -lo, mas o tilde no nome do dispositivo (conforme inserido no iTunes) não é reconhecido no tempo de execução como um tilde. Aqui está o código que não funciona:

NSString *safedevicename = [[UIDevice currentDevice] name];
safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"`" withString:@"'"];

Não encontra ocorrências de um tilde e não substitui nada. Eu também usei rangeOfString Para procurar tildes e não retorna nada. Tenho 100% de certeza de que o personagem, pelo menos quando ele entra no iTunes, é um tilde.

Além disso, ao imprimir uma descrição da string para o console, o personagem é codificado como \u00b4, e quando pairam sobre a variável, ela aparece como um período ..

Alguém sabe como eu posso pegar esse personagem e tirá -lo de lá? Além disso, não existe uma maneira de limpar mais facilmente a string para garantir que seja seguro enviar um soquete?

EDIT: Também algo que pode ser útil, para escrever o NSString no NSOutputString, uso a seguinte linha de código:

len = [oStream write:[[writeString dataUsingEncoding:NSASCIIStringEncoding] bytes] maxLength:[writeString lengthOfBytesUsingEncoding:NSASCIIStringEncoding]];

Edit #2: Esta linha de código funciona para substituir a tilde, mas tenho certeza de que existem outros personagens com os quais devo me preocupar:

safedevicename = [safedevicename stringByReplacingOccurrencesOfString:@"\\u00b4" withString:@"'"];
Foi útil?

Solução

O comentário de Jason foi a resposta correta: eu precisava alterar a codificação de NSASCIIStringEncoding para NSUTF8StringEncoding.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top