Objective-C:瑞典文字ÅÄÖ的问题

时间:2010-11-10 20:23:25

标签: iphone objective-c xcode4

在这里问了一个关于同一个问题的问题:Silly problem with UTF8但是有些搞砸了这个问题所以我做了一个新的问题并尝试更清洁。

如果我再问这个问题我会道歉。

我一直试图让这个工作,但只是无法得到我想要的结果。我已经尝试过我之前的帖子中的建议,但仍然无法让它工作。如你所知,我对此非常陌生并且真的试着阅读它。

以下是该方案:

  • 的NSMutableArray
  • 存储瑞典语字符:“ÅÄÖ”
  • NSLog数组
  • 输出不正确

代码:

  

NSMutableArray * myArray = [[NSMutableArray alloc] init];
  [myArray addObject:@“===”];
  [myArray addObject:@“ÅÄÖ”];
  [myArray addObject:@“===”];
  NSLog(@“myArray:%@”,myArray);

我得到的输出是:

  

2010-11-10 21:20:17.826 nsmutablearray_test [2976:207] myArray :(
      “===”,
      “\ U00c5 \ U00c4 \ U00d6”,
      “===”
  )

我正在寻找的输出是:

  

“===”,
      “AAO”,
      “===”

由于我已经针对这个(简单)问题测试了所有类型的东西,如果有人能够向我展示解决此问题的代码,我会非常感激吗?

此致

3 个答案:

答案 0 :(得分:3)

\U00c5Å的unicode代码,因此从技术上讲,输出是正确的。字符串在内存中仍然是相同的,只是NSLog没有按照你期望的方式输出它。但它仍然是相同的字符串。

答案 1 :(得分:2)

这是一个简单的解决方案:

NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject: @"==="];
[myArray addObject: @"ÅÄÖ"];
[myArray addObject: @"==="];
NSLog(@"myArray: %@", myArray);

for (NSString *string in myArray) {
    NSLog(@"%@", string);
}

输出:

Swedish[3453:a0f] ===
Swedish[3453:a0f] ÅÄÖ
Swedish[3453:a0f] ===

答案 2 :(得分:0)

如果我没记错的话,这只是NSLog如何处理UTF8的问题。尝试首先将描述存储到NSString中,然后记录。

无论哪种方式,数据都是正确的,这纯粹是一个NSLog问题。