我有不同的文本編碼CString混合集。如何檢測iPhone/iPad中的CString文本編碼?
因爲我不知道CString的原始編碼,所以如何檢測iphone/iPad中的CString文本編碼?
謝謝。
我有不同的文本編碼CString混合集。如何檢測iPhone/iPad中的CString文本編碼?
因爲我不知道CString的原始編碼,所以如何檢測iphone/iPad中的CString文本編碼?
謝謝。
由於相同的字符串在多種編碼中可能有效,所以在一般情況下無法解決此問題,因爲沒有其他信息。例如,十六進制值48 45 4C 4C D4等同於iso-8859-1中的「HELL?」,KOI8-R編碼中的「HELL」。任何8位編碼都是幾乎不可區分的,除非你開始進行啓發式檢查,比如做字典檢查(嗯......看起來像保加利亞語)。
一種策略是首先嚐試utf-8,然後如果輸入無法解碼爲utf-8,則返回指定的8位編碼(例如,iso-8859-1)。 (使用utf-8時,是字節序列無效,所以如果嘗試將其解碼爲utf-8,很可能某些任意8位編碼中的字符串會引發錯誤)。
NSString類使用+stringWithContentsOfFile:usedEncoding:error
提供了一些編碼檢測,但它似乎只在從文件或URL加載時纔可用。我不確定它嘗試了多少種編碼或它有多準確。
此方法不提供自動字符檢測。您需要提供正確的編碼。 – user403015 2011-03-30 04:56:24
@ user403015:再次閱讀文檔,它說:「此方法試圖確定文件在路徑上的編碼。」您正在查看'stringWithContentsofFile:encoding:error',而不是'stringWithContentsOfFile:'**''''''''編碼:錯誤'。 – dreamlax 2011-03-30 07:41:41