我在显示字符时遇到问题:
Ex:我的话是:Üniversäl
但是当我打印这个单词时它显示为:√únivers√§l
。
如何解决此问题?
如此处所示它在提示中显示正确的单词:
但是当我打印字符串str1时,打印√únivers√§l
答案 0 :(得分:2)
metal umlauts的问题?
这取决于您正在使用的输出通道的编码。
例如:
NSString *universal = @"Üniversäl";
NSLog(@"Üniversal: %@", universal);
printf("%s\n", [universal cStringUsingEncoding:NSMacOSRomanStringEncoding]);
printf("%s\n", [universal cStringUsingEncoding:NSISOLatin1StringEncoding]);
printf("%s\n", [universal cStringUsingEncoding:NSUTF8StringEncoding]);
以三种不同的编码将字符串“打印”到终端。他们中的一个看起来对你好吗?
答案 1 :(得分:1)
我会尝试将您的编码更改为更多UTF8-ish
NSString *otherString = [[NSString alloc] initWithCString:"Üniversäl" encoding:NSMacOSRomanStringEncoding];
NSLog(@"%@",otherString); // outputs Üniversäl
NSString *string = [[NSString alloc] initWithCString:"Üniversäl" encoding:NSUTF8StringEncoding];
NSLog(@"%@",string); // outputs Üniversäl
答案 2 :(得分:0)
这不是答案,但我想在我的评论中添加截图。
我将UILabel拖放到我的故事板并将其附加到label1。每件事对我来说都很好。我在iOS 6中使用Xcode 4.6。如果我错过了什么,请告诉我?
@interface v1ViewController : UIViewController
@property (nonatomic, retain) IBOutlet UILabel *label1;
@end
@implementation v1ViewController
@synthesize label1;
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *tempArray = [[NSArray alloc] initWithObjects:@"Üniversäl", nil];
NSString *str2 = [tempArray objectAtIndex:0];
//NSLog(@"str2: %s",[str2 UTF8String]); // outputs Üniversäl
NSLog(@"str2: %@",str2); // outputs Üniversäl
label1.text = str2;
}