Tilde no nome do dispositivo, causando problemas com o soquete NSOutputStream
-
22-09-2019 - |
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:@"'"];
Solução
O comentário de Jason foi a resposta correta: eu precisava alterar a codificação de NSASCIIStringEncoding
para NSUTF8StringEncoding
.