2013-08-20 19 views
-1

我有同時具有ASCII文本和二進制內容如何可以分析二進制和ASCII combinatio N文件

當我解析該文件以UTF-8編碼類型

ASCII型部件是可讀文件,但是二進制編碼部分不能讀取。

並且整個長度都是正確的。因此該文件的編碼類型是UTF-8。

但我怎麼能解析java程序的二進制編碼部分?

+0

你的問題根本不清楚...... 如果是二進制文件,你爲什麼要閱讀它?你只是不能,如果它是一個二進制文件(http://en.wikipedia.org/wiki/Binary_file) 我不認爲這是一個utf8的問題。但也許我錯了告訴我們更多關於你已經做了什麼,你想要什麼 – Marc

回答

0

您可以嘗試讀取1個字節並決定: - 它是ASCII或可能是UTF-8(如果大於127,可能比UTF-8) - 如果是ASCII,則不會添加到字符串和狀態重置。

如果也許UTF-8: 讀取的第二部分:下一個字節。 如果最後2個字節是UTF-8比添加到字符串和狀態重置 如果不是一個可接受的UTF-8字符,比最後2個字節是二進制數據:添加到數據隊列。

處理下一個字節直到文件結束。

在這種情況下,您將擁有所有可能的ASCII和所有可能的UTF-8字符,並保留dor數據。

可當readed字符是在數據的情況下,有沒有辦法知道,直到你有原始文件descriptior。例如: 在位置1000處開始數據塊直到.... pos 2000. 在位置2000開始直到2500 ASCII字符串 等等。

我希望它有幫助

+0

非常感謝。 – nofixing

0

取決於。

閱讀文件爲二進制,也許作爲一個字節緩衝區,所以字節序列可能被拾起爲字符串。

或者,如果你能做出格式的語法,這將是可行太:在字節級匹配關鍵字String.getBytes("UTF-8")StringTemplate如果你真的想在gramamr解決方案中付出努力。

+0

是什麼?哦,這是好主意! – nofixing

+0

我對此沒有任何想法! – nofixing

+0

文件的類型是UTF-8和一個數據的長度爲1024個字節 – nofixing