我想知道在objective-c中的文本文件編碼。你能解釋我怎麼知道嗎?如何檢測objective-c中的文本文件編碼?
4
A
回答
6
您可以使用stringWithContentsOfFile:usedEncoding:error:
,除了新字符串之外,還會返回使用的編碼。
我應該注意到,這本質上是一個啓發式過程 - 並不總是可以確定文件的字符編碼。
1
一些文本文檔在我的項目中顯示亂碼,所以我需要知道文本文件的編碼,以更改其編碼,讓它可以被人類讀取。
我發現這一點:http://lists.w3.org/Archives/Public/www-validator/2002Aug/0084.html 和使用OC重寫代碼,它可以爲我工作:
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *sourceFilePath = [documentPath stringByAppendingPathComponent:@"fileName.txt"];
NSFileHandle *sourceFileHandle = [NSFileHandle fileHandleForReadingAtPath:sourceFilePath];
NSData *begainData = [sourceFileHandle readDataOfLength:3];
Byte *bytes = (Byte *)[begainData bytes];
if (bytes[0] == 0xff
&& bytes[1] == 0xfe
&& (begainData.length < 4
|| bytes[2] != 0
|| bytes[3] != 0
)
)
{
NSLog(@"unicode");
}
if (bytes[0] == 0xfe
&& bytes[1] == 0xff
)
NSLog(@"BigEndianUnicode");
if (bytes[0] == 0xef && bytes[1] == 0xbb && bytes[2] == 0xbf)
NSLog(@"UTF8");
if (bytes[0] == 0x2b && bytes[1] == 0x2f && bytes[2] == 0x76)
NSLog(@"UTF7");
if (bytes[0] == 0xff && bytes[1] == 0xfe && bytes[2] == 0 && bytes[3] == 0)
NSLog(@"UTF32");
if (begainData.length < 3)
NSLog(@"ascii");
相關問題
- 1. 如何檢測文本文件的編碼/代碼頁
- 2. 如何檢測文件的編碼?
- 3. 如何使用Delphi檢測文本文件的字符編碼?
- 4. 如何在java中的inputStream之前檢測文本文件的編碼?
- 5. 準確的JSON文本編碼檢測
- 6. 如何檢測iPhone/iPad中的CString文本編碼?
- 7. 在PHP中檢測文件編碼
- 8. 檢測上傳文本文件的編碼(ASP.NET MVC)
- 9. 如何檢測flex/actionscript中的文件編碼?
- 10. Thymeleaf:檢測硬編碼文本
- 11. PHP - 如何檢測ANSI文本文件?
- 12. 如何檢測編輯文本中的西里爾文字?
- 13. 不知道文件編碼在objectivec中的內存映射
- 14. eclipse自動文件編碼檢測
- 15. 如何更改文本文件編碼?
- 16. 如何檢查文本文件原始編碼VC++或MFC
- 17. Boost:如何檢查文本文件字符編碼/字符集?
- 18. 如何檢測文件的字符編碼?
- 19. 如何檢測上傳CSV文件的編碼
- 20. 如何檢測和轉換文本編碼?
- 21. 如何檢測文本塊
- 22. 如何檢查數組的內容?解析XML文件的ObjectiveC
- 23. 如何在vbscript中檢測文本文件(EOF)的結尾?
- 24. 如何檢測文本文件中的碰撞
- 25. 如何自動檢測文本文件中的句子片段
- 26. 如何檢測MIME文件中的純文本?
- 27. 如何檢測文本文件中的選項卡?
- 28. 如何檢測照片中的文本
- 29. 檢測的文件版本
- 30. 如何編碼爲UTF文本文件與未知編碼jquery
謝謝丹尼爾。 :) – Rizki 2011-03-11 07:53:53