我想知道在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. 如何檢測iPhone/iPad中的CString文本編碼?
- 5. 在PHP中檢測文件編碼
- 6. 如何檢測flex/actionscript中的文件編碼?
- 7. 如何檢測編輯文本中的西里爾文字?
- 8. 不知道文件編碼在objectivec中的內存映射
- 9. eclipse自動文件編碼檢測
- 10. 如何檢查文本文件原始編碼VC++或MFC
- 11. Boost:如何檢查文本文件字符編碼/字符集?
- 12. 如何檢測文件的字符編碼?
- 13. 如何檢測和轉換文本編碼?
- 14. 如何檢測文本塊
- 15. 如何檢測MIME文件中的純文本?
- 16. 如何在vbscript中檢測文本文件(EOF)的結尾?
- 17. 如何檢測文本文件中的選項卡?
- 18. 如何檢查數組的內容?解析XML文件的ObjectiveC
- 19. 如何檢測文件是否使用UTF-8編碼?
- 20. SubRip文件解析器無法檢測文件編碼
- 21. 文本文件編碼
- 22. 如何檢測Siri是否在iOS的textview中編寫文本?
- 23. 在文本中檢測代碼
- 24. 如何檢測文本中的源代碼?
- 25. 如何檢測文件是否不是c中的文本文件#
- 26. 如何更改Eclipse中的默認文本文件編碼?
- 27. 拼圖。帶有編碼文本的Txt文件。如何解碼?
- 28. 如何檢測C++中的空文件?
- 29. 如何檢測XSD文件中的SimpleType?
- 30. 如何檢測在文本框中
謝謝丹尼爾。 :) – Rizki 2011-03-11 07:53:53