【发布时间】:2026-01-24 12:00:01
【问题描述】:
我是 Objective-C 的新手,并尝试使用 apples docs 上的示例将格式错误的 UTF8 编码的 NSString 转换为格式正确的字符串。
NSString *theString = @"Lügen"; //should be "ü"
NSString *asciiString = [[NSString alloc] initWithData:asciiData encoding:NSASCIIStringEncoding];
NSLog(@"Original: %@ (length %d)", theString, [theString length]);
NSLog(@"Converted: %@ (length %d)", asciiString, [asciiString length]);
结果:
Original: Lügen (length 6)
Converted: LA1/4gen (length 8)
这里什么都不做:
NSString* str = [NSString stringWithUTF8String:
[theString cStringUsingEncoding:NSASCIIStringEncoding]];
这会导致我的应用崩溃
NSString* str = [NSString stringWithUTF8String:
[theString cStringUsingEncoding:NSUTF8StringEncoding]];
有人知道我做错了什么吗?
【问题讨论】:
-
你能将字符串转储为十六进制吗?我不能流利地阅读格式错误的 UTF8 :)
-
这是一个 "ü" 不知道如何获取十六进制值 ;)
-
请在任何涉及崩溃的问题中发布崩溃的详细信息。
-
@Jano:您应该将其添加为答案。
标签: objective-c ios utf-8