iPhoneでgb 2312(中国語)コードファイルまたはバイナリストリームを読み込む
文字コードに至るまで、ファイルの読み書きに関わったソフトウェア開発者は、国際通用:UTF-8コード、ANSCIIコード、Unicodeコード中国語:GB 2312、GBK日本語、Shift-jisなどを知っているはずです.
このように多くの重要でないことを言って、技術は実際の問題を解決します:
1.UTF-8でエンコードされたテキストファイルを読み込むにはどうすればいいですか?
2.GB 2312(中国語)のテキストファイルをどのように読みますか?
3.他のエンコードファイルを読み込むにはどうすればいいですか?
まず最初の問題を解決し、
1.UTF-8でエンコードされたテキストファイルを読み込むにはどうすればいいですか?
2.GB 2312(中国語)のテキストファイルをどのように読みますか?
多くの人が考えているかもしれませんが、それは簡単ではありません.appleはgb 2312のファイル符号化定数を提供しているに違いありません.それらの定数を見てみましょう.NSUTF 8 StringEncoding定義ファイルを見てみると、GB 2312の定数定義があるはずです.
残念ながら見つけられませんでしたが、Appleは手がかりを残して探してもらいましたが、注釈をよく見てください.
Note that in addition to the values explicitly listed below, NSStringEncoding supports encodings provided by CFString.
See CFStringEncodingExt.h for a list of these encodings.
See CFString.h for functions which convert between NSStringEncoding and CFStringEncoding.
私の英语は比较的に良くなくて、しかし大意は见て明白で、下で符号化のフォーマットを支持しないで、CFStringEncodingExt.h中に書類を明記する.
finderのファイル検索方法でCFStringEncodingExtを見つけました.h .
よく見ると確かにkCFStringEncodingGBが見つかりました18030_2000(kCFStringEncodingGB_2312_80だと思いますが、実際はそうではありません)しかしこれはCFStringEncodingタイプで、NSEncodeのタイプが必要です.
CFStringとNSStringは同じメモリ構造を持ち、NSStringの重要な補完でもある.CFStringのヘルプドキュメントを検索することによって、この方法を見つけた.CFStringConvertEncodingToNSStringEncoding
2つ目の問題は解決しました
3.他のエンコードファイルを読み込むにはどうすればいいですか?
以上の方法で、三つ目の問題も順調に解決できると信じています.
記事のアドレス:http://www.cnblogs.com/likwo/archive/2011/06/26/2090914.html
このように多くの重要でないことを言って、技術は実際の問題を解決します:
1.UTF-8でエンコードされたテキストファイルを読み込むにはどうすればいいですか?
2.GB 2312(中国語)のテキストファイルをどのように読みますか?
3.他のエンコードファイルを読み込むにはどうすればいいですか?
まず最初の問題を解決し、
1.UTF-8でエンコードされたテキストファイルを読み込むにはどうすればいいですか?
NSString *filePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:fileName];
[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]
//
//NSData *data = [NSData dataWithContentsOfFile:filePath];
//NSString *textFile = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
2.GB 2312(中国語)のテキストファイルをどのように読みますか?
多くの人が考えているかもしれませんが、それは簡単ではありません.appleはgb 2312のファイル符号化定数を提供しているに違いありません.それらの定数を見てみましょう.NSUTF 8 StringEncoding定義ファイルを見てみると、GB 2312の定数定義があるはずです.
/* Note that in addition to the values explicitly listed below, NSStringEncoding supports encodings provided by CFString.
See CFStringEncodingExt.h for a list of these encodings.
See CFString.h for functions which convert between NSStringEncoding and CFStringEncoding.
*/
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
};
残念ながら見つけられませんでしたが、Appleは手がかりを残して探してもらいましたが、注釈をよく見てください.
Note that in addition to the values explicitly listed below, NSStringEncoding supports encodings provided by CFString.
See CFStringEncodingExt.h for a list of these encodings.
See CFString.h for functions which convert between NSStringEncoding and CFStringEncoding.
私の英语は比较的に良くなくて、しかし大意は见て明白で、下で符号化のフォーマットを支持しないで、CFStringEncodingExt.h中に書類を明記する.
finderのファイル検索方法でCFStringEncodingExtを見つけました.h .
よく見ると確かにkCFStringEncodingGBが見つかりました18030_2000(kCFStringEncodingGB_2312_80だと思いますが、実際はそうではありません)しかしこれはCFStringEncodingタイプで、NSEncodeのタイプが必要です.
CFStringとNSStringは同じメモリ構造を持ち、NSStringの重要な補完でもある.CFStringのヘルプドキュメントを検索することによって、この方法を見つけた.CFStringConvertEncodingToNSStringEncoding
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *textFile = [NSString stringWithContentsOfFile:filePath encoding:enc error:nil];
2つ目の問題は解決しました
3.他のエンコードファイルを読み込むにはどうすればいいですか?
以上の方法で、三つ目の問題も順調に解決できると信じています.
記事のアドレス:http://www.cnblogs.com/likwo/archive/2011/06/26/2090914.html