2012-04-24 23 views
0

ギリシャ語を含むNSStringをconst charに変換しようとしています。私は、文字列をUTF-8エンコーディングで変換しようとしています。これはギリシャ語であり、charをログに記録すると、その中にジャンクがあります。あなたは代わりにユニコード(NSUnicodeStringEncoding)を使用して、UTF8を使用する必要はありませんここで少し助け..NSString to const 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); 
+0

文字列に「π」という文字を使用すると、そのコードに問題はありません。 –

+0

ギリシャ文字列をUItextFieldに挿入すると、何の問題もありません。私の問題は、const charへの変換を行っているときです。最後の文字列には迷惑メールがあります。 –

答えて

0

してください。

あなたはNSStringEncodingは、このオプション(詳細を持っている)が表示されます表示された場合は動作しませんされている場合は、あなたが使用しようとすることができNSWindowsCP1253StringEncoding

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を見ることができます他のUTF16またはUTF32。しかし、ユニコードはあなたのために働くと思います。

からNSLog(@"%s",string);は、Unicode文字を解読できないことを念頭に置い

テイクを編集します。だから、それは本当に混乱を示すでしょう。

動作するかどうかをテストするには、変換を行ってからやり直してください。同じ場合は、データを失うことはありません。

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

異なるエンコードをテストし、NSWindowsCP1253Encodingがテストのために機能しました。しかし、私の問題は、NSStringをSQL文のconst charに変換する方法です。 NSString * original = [NSString stringWithFormat:@ "select * from number = 'ΑΘΗΝΑ'; const char * sqlStatement =(const char *)[元のcStringUsingEncoding:NSWindowsCP1253StringEncoding];次に私はしようとしています。 –

+0

私はそれを解決しました。sqlite3_prepare_v2を実行する前に、const char * sqlStatement = [sqlState UTF8String]でなければなりません。あなたの答えは@Rodrigoです。 –

関連する問題