[iPhone Dev] NSData가 UTF8로 인코딩 되어 있지 않아 NSString에서 한글을 볼 수 없을 때.
Sep 02
iphone ascii, encoding, ios, ios_dev, iPad, iphone, iphone_dev, nsstring, unicode, utf8, 아이패드, 아이폰 3 Comments
서버 등에서 받은 NSData가 NSUTF8StringEncoding나 NSASCIIStringEncoding 인코딩으로 NSString을 생성해도 한글이 제대로 보이지 않을 때는 0×80000840 으로 인코딩 하면 된다.
NSString* aString = [[[NSString alloc] initWithData:receivedData encoding:0x80000422] autorelease];
아래 표가 NSString.h에서 정의하고 있는 encoding인데
enum {
NSASCIIStringEncoding = 1, /* 0..127 only */
NSNEXTSTEPStringEncoding = 2,
NSJapaneseEUCStringEncoding = 3,
NSUTF8StringEncoding = 4,
NSISOLatin1StringEncoding = 5,
NSSymbolStringEncoding = 6,
NSNonLossyASCIIStringEncoding = 7,
NSShiftJISStringEncoding = 8, /* kCFStringEncodingDOSJapanese */
NSISOLatin2StringEncoding = 9,
NSUnicodeStringEncoding = 10,
NSWindowsCP1251StringEncoding = 11, /* Cyrillic; same as AdobeStandardCyrillic */
NSWindowsCP1252StringEncoding = 12, /* WinLatin1 */
NSWindowsCP1253StringEncoding = 13, /* Greek */
NSWindowsCP1254StringEncoding = 14, /* Turkish */
NSWindowsCP1250StringEncoding = 15, /* WinLatin2 */
NSISO2022JPStringEncoding = 21, /* ISO 2022 Japanese encoding for e-mail */
NSMacOSRomanStringEncoding = 30,
NSUTF16StringEncoding = NSUnicodeStringEncoding, /* An alias for NSUnicodeStringEncoding */
#if MAC_OS_X_VERSION_10_4 <= MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_2_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
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 */
#endif
};
한글은 아래 표에 나와있다.
* NSString *
| Western (Mac OS Roman) | 0x1e | ||
| Japanese (Mac OS) | 0×80000001 | ||
| Traditional Chinese (Mac OS) | 0×80000002 | ||
| Korean (Mac OS) | 0×80000003 | ||
| Arabic (Mac OS) | 0×80000004 | ||
| Hebrew (Mac OS) | 0×80000005 | ||
| Greek (Mac OS) | 0×80000006 | ||
| Cyrillic (Mac OS) | 0×80000007 | ||
| Devanagari (Mac OS) | 0×80000009 | ||
| Gurmukhi (Mac OS) | 0x8000000a | ||
| Gujarati (Mac OS) | 0x8000000b | ||
| Thai (Mac OS) | 0×80000015 | ||
| Simplified Chinese (Mac OS) | 0×80000019 | ||
| Tibetan (Mac OS) | 0x8000001a | ||
| Central European (Mac OS) | 0x8000001d | ||
| Symbol (Mac OS) | 0×6 | ||
| Dingbats (Mac OS) | 0×80000022 | ||
| Turkish (Mac OS) | 0×80000023 | ||
| Croatian (Mac OS) | 0×80000024 | ||
| Icelandic (Mac OS) | 0×80000025 | ||
| Romanian (Mac OS) | 0×80000026 | ||
| Keyboard Symbols (Mac OS) | 0×80000029 | ||
| Farsi (Mac OS) | 0x8000008c | ||
| Cyrillic (Mac OS Ukrainian) | 0×80000098 | ||
| Western (Mac VT100) | 0x800000fc | ||
| Unicode™ (UTF-16) | 0xa | ||
| Unicode™ (UTF-8) | 0×4 | ||
| Western (ISO Latin 1) | 0×5 | ||
| Central European (ISO Latin 2) | 0×9 | ||
| Western (ISO Latin 3) | 0×80000203 | ||
| Central European (ISO Latin 4) | 0×80000204 | ||
| Cyrillic (ISO 8859-5) | 0×80000205 | ||
| Arabic (ISO 8859-6) | 0×80000206 | ||
| Greek (ISO 8859-7) | 0×80000207 | ||
| Hebrew (ISO 8859-8) | 0×80000208 | ||
| Turkish (ISO Latin 5) | 0×80000209 | ||
| Nordic (ISO Latin 6) | 0x8000020a | ||
| Thai (ISO 8859-11) | 0x8000020b | ||
| Baltic Rim (ISO Latin 7) | 0x8000020d | ||
| Celtic (ISO Latin 8) | 0x8000020e | ||
| Western (ISO Latin 9) | 0x8000020f | ||
| Latin-US (DOS) | 0×80000400 | ||
| Greek (DOS) | 0×80000405 | ||
| Baltic Rim (DOS) | 0×80000406 | ||
| Western (DOS Latin 1) | 0×80000410 | ||
| Central European (DOS Latin 2) | 0×80000412 | ||
| Turkish (DOS) | 0×80000414 | ||
| Icelandic (DOS) | 0×80000416 | ||
| Arabic (DOS) | 0×80000419 | ||
| Cyrillic (DOS) | 0x8000041b | ||
| Thai (Windows, DOS) | 0x8000041d | ||
| Japanese (Windows, DOS) | 0×8 | ||
| Simplified Chinese (Windows, DOS) | 0×80000421 | ||
| Korean (Windows, DOS) | 0×80000422 | ||
| Traditional Chinese (Windows, DOS) | 0×80000423 | ||
| Western (Windows Latin 1) | 0xc | ||
| Central European (Windows Latin 2) | 0xf | ||
| Cyrillic (Windows) | 0xb | ||
| Greek (Windows) | 0xd | ||
| Turkish (Windows Latin 5) | 0xe | ||
| Hebrew (Windows) | 0×80000505 | ||
| Arabic (Windows) | 0×80000506 | ||
| Baltic Rim (Windows) | 0×80000507 | ||
| Vietnamese (Windows) | 0×80000508 | ||
| Western (ASCII) | 0×1 | ||
| Japanese (Shift JIS X0213) | 0×80000628 | ||
| Chinese (GBK) | 0×80000631 | ||
| Chinese (GB 18030) | 0×80000632 | ||
| Japanese (ISO 2022-JP) | 0×15 | ||
| Korean (ISO 2022-KR) | 0×80000840 | ||
| Japanese (EUC) | 0×3 | ||
| Simplified Chinese (EUC) | 0×80000930 | ||
| Traditional Chinese (EUC) | 0×80000931 | ||
| Korean (EUC) | 0×80000940 | ||
| Japanese (Shift JIS) | 0x80000a01 | ||
| Cyrillic (KOI8-R) | 0x80000a02 | ||
| Traditional Chinese (Big 5) | 0x80000a03 | ||
| Western (Mac Mail) | 0x80000a04 | ||
| Traditional Chinese (Big 5 HKSCS) | 0x80000a06 | ||
| Western (NextStep) | 0×2 | ||
| Non-lossy ASCII | 0×7 | ||
| Western (EBCDIC US) | 0x80000c02 |
Ref: NSString의 인코딩

Pingback: Tweets that mention [iPhone Dev] NSData가 UTF8로 인코딩 되어 있지 않아 NSString에서 한글을 볼 수 없을 때. | Alones world -- Topsy.com