[英]NSString to const char * convert with Greek characters
我正在尝试将包含希腊语单词的NSString转换为const char。 我正在尝试使用适用于希腊语的UTF-8编码转换字符串,当我注销char时,其中有垃圾。 请在这里一点帮助。
//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);
您不必使用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];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.