簡體   English   中英

可以用Java在多個字符集中編碼文件嗎?

[英]Can a file be encoded in multiple charsets in Java?

我正在開發一個Java插件,它允許人們通過指定他們希望使用的字符集編碼來寫入和讀取文件。 但是,我對如何在單個文件中編碼多個編碼感到困惑。 例如,假設A字符來自一個字符集而B字符來自另一個字符,是否可以將“AAAAABBBBBAAAAA”寫入文件?

如果不可能,對於任何編程語言,或者特別是Java,這通常是正確的嗎? 如果有可能,我將如何繼續讀取(解碼)文件?

我不想使用Charset的encode()和decode()方法,因為使用它們的測試失敗了(一些字符集未被正確解碼)。 我也不想出於各種原因使用第三方程序,所以這個問題的范圍純粹是標准的java包/代碼。

非常感謝!
NS

您需要將其作為字節流讀取並事先知道字符開始和結束的字節位置,或使用一些特殊的分隔符/字節范圍來指示字符組的開始和結束。 這樣,您可以獲取特定字符組的字節,最后使用所需的字符編碼對其進行解碼。

此問題並非特定於Java。 這個要求很奇怪。 我想知道如何混合像這樣的字符編碼。 只需使用一種統一編碼,例如UTF-8,它幾乎支持人類所知的所有字符。

當然,原則上可以將以不同字符集編碼的文本寫入一個文件中,但為什么要這樣做呢?

字符編碼只是從文本字符到字節的映射,反之亦然。 文件由字節組成。 編寫文件時,字符編碼確定字符如何轉換為字節,並在讀取時確定如何將字節轉換回字符。

您可以將文件的一部分編碼為一個字符編碼,另一部分使用另一個字符編碼。 您必須有一些機制來跟蹤哪些部分使用什么編碼進行編碼,因為該文件不會自動跟蹤您的情況。

我也想知道這件事,因為我的客戶剛問了一個類似的問題。 就像BalusC提到的那樣,這不是特定於java的問題。 經過幾次來回,我發現真正的問題可能是“信息的多重編碼”,而不是多個編碼文件。 即我們有一個xml字符串文本需要用8859-1編碼,如果我們將其保存為文件,那么我們需要對其進行編碼。 xml的默認編碼是UTF-8,我們可能不需要將整個xml編碼為8859-1。 由於xml節點只是將信息傳遞給其他系統和內容(xml節點的值,需要與8859-1保持一致)的工具。 那么在這種情況下我們需要多個編碼嗎? 可能不是。 我們仍然可以使用UTF-8對xml進行編碼,然后將其傳遞。 一旦客戶端收到xml,他們就需要從UTF-8編碼文件中讀取信息,並將xml節點的值保持為8859-1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM