您沒有使用UTF-8,而不是使用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;
你可以看到一個特定的希臘lenguage:NSWindowsCP1253StringEncoding
如果是不工作,你可以嘗試使用其他UTF16或UTF32。但我認爲Unicode爲你工作。
- 編輯
採取記住,NSLog(@"%s",string);
不能解碼Unicode字符。所以,它會真的顯示混亂。
要測試它是否工作,請執行轉換並重做它。如果是一樣的,那麼你不會丟失數據。
const char *cLetter = (const char *)[letter cStringUsingEncoding:NSUnicodeStringEncoding];
NSString *original = [NSString stringWithCString:cLetter encoding:NSUnicodeStringEncoding];
在我的字符串中使用字符'π'時,我對該代碼沒有任何問題。 – 2012-04-24 20:31:28
當我插入希臘字符串到UItextField時,我沒有問題。我的問題是當我正在轉換爲const char時,最後的字符串有垃圾! – 2012-04-25 15:42:04