2012-04-24 2 views
0

그리스 문자를 포함하는 NSString을 const char로 변환하려고합니다. 나는 그리스어에 대한 UTF-8 인코딩을 사용하여 문자열을 변환하려고하는데, char를 로그 아웃 할 때 그 문자열에 쓰레기가 있습니다. .. 당신은 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

여기에 약간의 도움을주세요, 대신 유니 코드 (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. 하지만 유니 코드가 당신을 위해 일한다고 생각합니다.

- 편집 NSLog(@"%s",string);은 유니 코드 문자를 해독 할 수없는 마음에

가져 가라. 그래서, 정말 엉망이 될 것입니다.

작동하는지 테스트하려면 변환을 수행하고 다시 실행하십시오. 동일하면 데이터를 잃어 버리지 않습니다.

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 *) [original cStringUsingEncoding : NSWindowsCP1253StringEncoding]; 그럼 나는 –

+0

그래, 해결 했어 .Sqlite3_prepare_v2를하기 전에 const char * sqlStatement = [sqlState UTF8String]이되어야한다. 감사합니다. 감사합니다. 감사합니다. @Rodrigo에 대한 답. –