關於iOS字元編碼

2021-06-23 05:30:25 字數 1447 閱讀 5437

剛遇到乙個字元編碼的問題,折騰了一天.

檔案是用gb13080編碼的, android下面解析完全沒問題, 但是ios下使用以下**:

nsdata *data = [nsdata datawithcontentsoffile:url];

nsstring *s = [[nsstring alloc] initwithdata:data encoding:cfstringconvertencodingtonsstringencoding(kcfstringencodinggb_18030_2000)];

解析出來的字串始終為nil.

最後採用以下方法: 

- (nsstring *)generategb18030stringbydeleteerrorrowsfromdata: (nsdata *)stringdata

} }// 2. 用此編碼解析字串並處理

// 2.1 解析資料,生成字串

nsstring *parsedstr = [[nsstring alloc] initwithdata:stringdata encoding:ec];

// 2.2 將字串分割成陣列

nsarray *parsedarr = [parsedstr componentsseparatedbystring:@"\n"];

nsmutablearray *willremovearr = [nsmutablearray array];

// 2.3 按行處理陣列

for (nsstring *linestr in parsedarr) }

// 3. 刪除無效的字串行

nsmutablearray *processedarr = [nsmutablearray arraywitharray:parsedarr];

[processedarr removeobjectsinarray:willremovearr];

// 4. 生成新的字串

nsmutablestring *processedstr = [nsmutablestring string];

for (nsstring *linestr in processedarr)

nsdata *processeddata = [processedstr datausingencoding:ec];

// 5. 將新的字串用gb_18030重新解碼

nsstring *resultstr = [[nsstring alloc]initwithdata:processeddata encoding:cfstringconvertencodingtonsstringencoding(kcfstringencodinggb_18030_2000)];

return resultstr;

}

最後查出資料中只有一行出了問題,大概是多了2個雙引號.

iOS 關於unicode編碼

網路通訊過程中常用的的一種編碼及解碼的方法,算是簡單的加密.一 pragma mark 將nsstring轉化為unicode字串 nsstring turntounicodewith nsstring curstr return result uppercasestring 二 pragma ma...

關於字元編碼

美國人首先對其英文本元進行了編碼,也就是最早的ascii碼,用乙個位元組的低7位來表示英文的128個字元,高1位統一為0 後來歐洲人發現尼瑪你這128位哪夠用,比如我高貴的法國人字母上面的還有注音符,這個怎麼區分,得,把高1位編進來吧,這樣歐洲普遍使用乙個全位元組進行編碼,最多可表示256位。歐美人...

關於字元編碼

我們知道在學習php和jsp的時候,出現亂碼是經常性的事情,怎樣來一勞永逸的解決這個問題,我來做個總結。首先來了解一下字符集,我們關心的字符集大概有這麼幾個,iso 8859 1 gb2312 gbk utf 8,其中iso 8859 1是採用1個位元組進行編碼,而gb2312和gbk則是在其基礎之...