說到文字編碼,與檔案讀寫打過交道的軟體開發人員應該都知道,比如國際通用:utf-8編碼,anscii編碼,unicode編碼中文:gb2312,gbk日文,shift-jis等等。
說了這麼多無關緊要的話,技術是來解決實際問題的:
1。如何讀取utf-8編碼的文字檔案?
2。如何讀取gb2312(中文)的文字檔案?
3。如何讀取其它編碼檔案?
首先解決第乙個問題,
1。如何讀取utf-8編碼的文字檔案?
[nsstring stringwithcontentsoffile:filepath encoding:nsutf8stringencoding error:nil]
//當然也可以採用如下方法
//nsdata *data = [nsdata datawithcontentsoffile:filepath];
//nsstring *textfile = [[nsstring alloc] initwithdata:data encoding:nsutf8stringencoding];
2。如何讀取gb2312(中文)的文字檔案?
/* 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 ;
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];
那麼第二個問題就解決了
3。如何讀取其它編碼檔案?
相信,通過以上的方法,第三個問題也可以很順利的解決了。
文字編碼簡介
字元編碼概述 下表,按照固定長編碼和可變長編碼進行分類。gb2312和gbk如果從與ascii碼相容的角度來講,也可以認為是可變長編碼。對於ascii碼以外的文字都是2位元組編碼。ucs和unicode在1991年已經統一 ascii編碼 前32個字元 0x00 0x1f 為控制字元 33到126 ...
文字編碼格式
編碼是用預先規定的方法將文字 數字或其他物件編成數碼。其他物件包括空字元 換行 空格等特殊含義的符號 總之,各種不同編碼格式解釋不同符號。處理不同編碼的資料使用不同編碼的解碼方式。常見的編碼格式有ascii ansi gbk gb2312 utf 8 gb18030和unicode等。ascii 碼...
關於文字編碼
原始檔用不同的編碼方式編寫,會導致 的執行結果不同。用ue編輯文件時,可以使用快捷鍵 ctrl h 檢視文字的字元編碼 可以設定顯示什麼編碼,acii碼 gbk big5 unicode等 在編譯程式時,可以指定字符集,檢視幫助資訊 man gcc,charset finput charset ch...