簡體   English   中英

NSString轉換為const char *用希臘字符轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM