【发布时间】:2012-10-24 01:32:43
【问题描述】:
我有一个像这样的 NSString。
雪铁龙ën
这是 Citron 的 ASCII。因此,努力尝试将此 NSString 转换为像这样的正确形式
string = [dict valueForKey:@"WIGMIGDIGFIG"]; //myBadString
NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding];
//sent it back to NSData with ACII encoding
NSString* mystring = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// put it back into a NSString but with the correct encoding
NSLog(@"%@", mystring);// check result.
所以我通过一个循环运行它以检查我的字典数组中的所有字符串,并且每个返回到日志中的字符串都接受其中包含 Citroën 的一个字符串。它只是从日志中遗漏了。
更新的问题,有人知道如何做我想做的事吗?我什至不确定这是否可能。我要做的就是修复已经创建的字符串,但显然编码不正确。
【问题讨论】:
-
我不知道您所说的“不在日志中”是什么意思——该字符串可以放在字典中并像其他任何内容一样记录。
-
请记住,您看到的内容取决于用于显示的字符集,可能无法真正反映字符串中的内容。要查看字符串中的内容,请检查带有
characterAtIndex的字符的数值,例如。 -
这毫无意义:
NSString *string = [[NSString alloc] init];NSString 是不变的,随后的赋值只会覆盖(并泄漏)您创建的空字符串的地址。 -
@HotLicks 我尝试同时记录原始 NSString 和新编码的 NSString 并且我有成对的所有东西,但是当涉及到 Citroën 我只有旧的 NSString 而新的 NSString 只是移动到下很多信息.. 几乎就像它从未放入 NSString 中一样。
-
嗯,经过这种转变,我不会感到非常惊讶。由于流中的 8 位字符作为 UTF8 无效,因此写入为 ASCII 然后读取为 UTF8 的字符串可能无法正确读取。
标签: ios encoding nsstring nsdata