0

ギリシャ語を含む 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);
4

1 に答える 1

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 を使用してみてください。しかし、ユニコードはあなたのために働くと思います。

- 編集

NSLog(@"%s",string);Unicode 文字をデコードできないことに注意してください。だから、それは本当に混乱を示します。

動作するかどうかをテストするには、変換を行い、やり直します。同じであれば、データを失うことはありません。

const char *cLetter = (const char *)[letter cStringUsingEncoding:NSUnicodeStringEncoding]; 
NSString *original = [NSString stringWithCString:cLetter encoding:NSUnicodeStringEncoding];
于 2012-04-26T00:34:04.450 に答える