NSString to const char *转换为希腊字符

时间:2012-04-24 20:25:03

标签: ios nsstring char cons

我正在尝试将包含希腊词的NSString转换为const char。我正在尝试使用UTF-8编码转换字符串,这是用于希腊语的,当我记录出来的时候,它有垃圾。请在这里帮一下..

//this is the greek word 
NSString *letter = textFieldLetter.text;

//NSString to const char conversion for the sql query
const char *cLetter = (const char *)[letter cStringUsingEncoding:NSUTF8StringEncoding]; 

//this contains junk!
NSLog(@"letter: %s",cLetter);

1 个答案:

答案 0 :(得分:0)

您不必使用UTF8,而是使用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;

您可以看到特定的希腊语语言:NSWindowsCP1253StringEncoding

如果不起作用,您可以尝试使用其他UTF16或UTF32。但我认为Unicode适合你。

- 编辑

请记住NSLog(@"%s",string);无法解码unicode字符。所以,它真的会显示出混乱。

要测试它是否有效,请进行转换,然后重做。如果相同,那么您不会丢失数据。

const char *cLetter = (const char *)[letter cStringUsingEncoding:NSUnicodeStringEncoding]; 
NSString *original = [NSString stringWithCString:cLetter encoding:NSUnicodeStringEncoding];