[objective-c][cocoa]NSString
2008/11/13
2008/11/13
cocoa
objective-c
Objective-Cです。Cocoaです。
NSStringです。
NSLogを使って、Terminalで日本語を出力しようとしていて、何故か出力されなくて困ってしまいました。
NSLog(@"日本語");
この一行で出力がとまってしまうのです。
原因は、Terminalの設定-詳細-言語環境-文字エンコーディングがEUCの環境で動作させていたからでした。
unicode(UTF-8)にしたら出力されました。
Orz...
コード
#import <Foundation/NSString.h>
#import <Foundation/NSAutoreleasePool.h>
int main(void){
// !!
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *s = @"123日本語";
NSString *s2 = [NSString stringWithCString:"123日本語" encoding:NSUTF8StringEncoding];
NSString *s3 = [NSString stringWithString:@"123日本語"];
NSLog(@"123日本語");
NSLog(s);
NSLog(s2);
NSLog(s3);
return 0;
}
#import <Foundation/NSAutoreleasePool.h>
int main(void){
// !!
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *s = @"123日本語";
NSString *s2 = [NSString stringWithCString:"123日本語" encoding:NSUTF8StringEncoding];
NSString *s3 = [NSString stringWithString:@"123日本語"];
NSLog(@"123日本語");
NSLog(s);
NSLog(s2);
NSLog(s3);
return 0;
}
Objective-Cではソースコードで文字列を扱うときには@""とします。
C言語ライクに使う場合は、""でよいようです。
この書き方で書くとオブジェクト定数(object constant)というものになって、NSStringとして扱えるそうです。
参考
: