iPhone上讀取ansi字串的例子

2021-08-25 15:11:56 字數 1362 閱讀 6114

iphone的nsstring並不支援ansi的字串(比如咱們常用的gb2312), 因此如果要讀取的話, 需要轉換為utf-8的

而iphone上自帶了libiconv庫, 於是這個轉換變的就比較簡單了

首先在工程的framework部分加入 /developer/platforms/iphoneos.platform/developer/sdks/iphoneos3.0.sdk/usr/lib/libiconv.dylib

當然, 中間那個iphoneos3.0.sdk需要換成你當前使用的sdk版本

實際轉換過程也就4步.

1, 引入iconv庫並新增標頭檔案

2, 利用iconv_open設定from和to的字串編碼

3, 執行iconv進行轉換

4, 利用iconv_close關閉iconv_open建立的例項.

基本上就是下面的**片段中 code_convert中的邏輯了.

#include int code_convert(char *from_charset, char *to_charset, char *inbuf, size_t inlen, char *outbuf, size_t outlen) 

int u2g(char *inbuf, size_t inlen, char *outbuf, size_t outlen)

int g2u(char *inbuf, size_t inlen, char *outbuf,size_t outlen)

而在實際應用時, 無論從檔案或者網路讀取, 都要獲取成nsdata或者char *或void *, 至少不能是nsstring, 因為nsstring無法直接處理.

以獲取成nsdata為例.

+ (nsstring *)getansistring:(nsdata *)ansidata 

nsstring *retstring = [nsstring stringwithutf8string:utf8string];

free(utf8string);

return retstring;

}

下面方法也可行:

nsstringencoding myencoding = cfstringconvertencodingtonsstringencoding(kcfstringencodinggb_18030_2000);

nsstring* poststr = [nsstring stringwithformat:@"isbn=%@",isbnstr];

nsdata* postdata = [poststr datausingencoding:myencoding];

ansi字元,unicode字元

編碼指不同國家的語言在計算機中的一種儲存和解釋規範 ansi與ascii 最初,internet上只有一種字符集 ansi的ascii字符集 american standard code for information interchange,美國資訊交換標準碼 它使用7 bits來表示乙個字元,總...

ANSI與寬字元轉換

c語言 ansi轉轉寬字元 mbstowcs char test 64 sprintf test,hello char n printf s test wchar t testt 64 intnret mbstowcs testt,test,sizeof testt wprintf l s test...

ANSI字元和UNICODE字元的轉換

此方法經常用於vc寫的dll或ocx函式的返回值中,而且此dll或ocx函式是供vb或js呼叫的。函式返回使用下面的格式返回 return sysallocstring bstr wtext wtext是轉換後的unicode字串 或 return sysallocstring bstr stext...