-->

的NSString为const char *转换与希腊字符(NSString to const ch

2019-06-23 22:08发布

我想转换包含一个希腊字,以一个const char一个NSString。 我试图用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);

Answer 1:

您不必使用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];


文章来源: NSString to const char * convert with Greek characters