NSString to const char * convert with Greek characters [英] NSString to const char * convert with Greek characters

查看:230
本文介绍了NSString to const char * convert with Greek characters的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将包含希腊字的NSString转换为const char。我试图转换字符串与UTF-8编码这是为希腊语言,当我记录的字符,它有垃圾在它。请在这里一点帮助。

I'm trying to convert an NSString which contains a greek word to a const char. I'm trying to convert the string with UTF-8 encoding which is for greek language and when i'm logging the char out, it has junk in it. Please a little help here..

//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,

You don't have to use UTF8, instead use Unicode (NSUnicodeStringEncoding).

如果您看到 NSStringEncoding 将会看到此选项( NSUnicodeStringEncoding 有更多):

If you see the NSStringEncoding will see this options (have more):

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

You can see a specific Greek lenguage: NSWindowsCP1253StringEncoding

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

If is don't work, you can try to use other UTF16 or UTF32. But I think Unicode work for you.

- 编辑

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

Take in mind that NSLog(@"%s",string); can not decode a unicode character. So, it will really show the mess.

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

To test if it work, do the conversion, and redo it. If is the same, so you don't lost data.

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

这篇关于NSString to const char * convert with Greek characters的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆