16

编辑: NSLog 输出在模拟器中运行良好,但在连接到真实设备时不起作用。它似乎是一个错误——http: //openradar.appspot.com/11148883。也碰巧它与LLDB有关,将Xcode切换到GDB可以解决问题。JetBrain 的 AppCode 也可以,它与 LLDB 配合得很好。


我在应用程序中有一堆 unicode 字符串,如果我尝试使用NSLog(@"%@", aString)之类的东西输出这些字符串中的任何一个,那么字符串中的所有 ASCII 字符都会被打印出来,但所有的西里尔字母字母会被弄乱,所以而不是

newLocation: coordinate:60.019584,30.284954 'Удельная'

我越来越:

newLocation: coordinate:60.019584,30.284954 '–ü–æ–∫–ª–æ–Ω–Ω–æ–≥–æ—Ä—Å–∫–∞—è'

使用这种输出进行任何调试都非常困难。而且因为该应用程序仅针对俄罗斯市场,所以我不能只更改语言环境并使用英文字符串。

所以我想知道是否有任何方法可以使 NSLog 与 unicode 字符一起工作?而且我只在寻找某种单线解决方案,我知道有一些方法可以编写半页代码并输出 unicode 字符,但我正在寻找更短的东西。理想情况下,我正在寻找一些 NSString 的方法,它可以使它全部工作。例如

NSLog(@"%@", [aString someThingThatMakesUnicodeWorkWithXcodeConsole]);
4

5 回答 5

4

是的,显然您可以创建一个包含并输出西里尔字母的字符串。当我学习Objective-C时,一开始我也遇到了同样的问题(我也在使用俄语单词和类似的东西)。所以解决方案是将字符串转换为其他格式,如下所示:

NSString *string = [NSString stringWithCString:"Привет, как дела?" encoding:4];
NSLog(@"%@", string);

或者

NSString *string = [NSString stringWithUTF8String:"Этот вариант короче!"];
NSLog(@"%@", string);

希望对你有帮助!

PS 这意味着您需要将您的字符串创建为 C 样式字符串,并将其编码参数设置为 4(UTF-8)。您可以在 NSString 中查看 NSStringEncoding 文档中的所有可用参数列表。

于 2012-04-19T12:52:13.513 回答
3

据我所知,它与某些 Xcode 版本上的 NSLog() 和 LLDB 有关。尝试以下解决方案之一:

  • 检查登录 Xcode Organizer >> 设备 >> 你的设备 >> 控制台。
  • 如果您使用后者,请使用 GDB 而不是 LLDB 作为调试器。这可以从模式选项中更改。请参考下面“cocos2d man”评论中的步骤。
  • 升级到 Xcode 4.3.2。有人说它解决了这个问题,但我自己还没有证实这一点。
于 2012-04-20T12:19:14.200 回答
1

尝试将其转换为 UTF8 字符串。

NSString *str = [aString UTF8String]
 NSLog(@"%@", str);

希望这可以帮助。

于 2012-04-19T11:37:52.290 回答
0

试着把它像NSLog(@"%@", aString);

编辑 :

您可以将其转换为 UTF8 字符串。这可以让你度过难关。

NSString *str = [aString UTF8String];

希望这可以帮助。

于 2012-04-19T11:35:40.477 回答
0

尝试这个。这个对我有用。

NSLog(@"%@", [NSString stringWithCString:[[places description] cStringUsingEncoding:NSASCIIStringEncoding] encoding:NSNonLossyASCIIStringEncoding]);
于 2015-10-07T07:34:24.993 回答