您没有使用UTF-8,而不是使用Unicode(NSUnicodeStringEncoding)。
如果你看到NSStringEncoding
会看到这个选项(有更多):
enum {
NSWindowsCP1253StringEncoding = 13, /* Greek */
NSUTF16StringEncoding = NSUnicodeStringEncoding,
NSUTF16BigEndianStringEncoding = 0x90000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */
NSUTF16LittleEndianStringEncoding = 0x94000100, /* NSUTF16StringEncoding encoding with explicit endianness specified */
NSUTF32StringEncoding = 0x8c000100,
NSUTF32BigEndianStringEncoding = 0x98000100, /* NSUTF32StringEncoding encoding with explicit endianness specified */
NSUTF32LittleEndianStringEncoding = 0x9c000100 /* NSUTF32StringEncoding encoding with explicit endianness specified */
};
typedef NSUInteger NSStringEncoding;
你可以看到一个特定的希腊lenguage:NSWindowsCP1253StringEncoding
如果是不工作,你可以尝试使用其他UTF16或UTF32。但我认为Unicode为你工作。
- 编辑
采取记住,NSLog(@"%s",string);
不能解码Unicode字符。所以,它会真的显示混乱。
要测试它是否工作,请执行转换并重做它。如果是一样的,那么你不会丢失数据。
const char *cLetter = (const char *)[letter cStringUsingEncoding:NSUnicodeStringEncoding];
NSString *original = [NSString stringWithCString:cLetter encoding:NSUnicodeStringEncoding];
在我的字符串中使用字符'π'时,我对该代码没有任何问题。 – 2012-04-24 20:31:28
当我插入希腊字符串到UItextField时,我没有问题。我的问题是当我正在转换为const char时,最后的字符串有垃圾! – 2012-04-25 15:42:04