2011-09-16 64 views
1

我想了解集成項目中發生了什麼。我們無法在最後得到編碼。編碼問題導出文件

立陶宛文件被導入到as400。在那裏,文本被存儲在編碼EBCDIC中。將數據導出到ANSI文件,然後讀取爲windows-1257。 ASCII字符工作正常,一些立陶宛人可以,但其餘的看起來像垃圾,像〜,¶和]。

例串去你管

開始文件
Tuskulënö

AS400
Tuskulënö
EAA9A9596
34224335A

導出的文件(AFTE R變換爲windows-1257)
Tuskulėnö

爲導出的文件預期的結果
Tuskulėnų

任何想法?

問候, 卡爾

+0

您是否指定在Java中讀寫文件時使用的編碼?如果不是,則使用平臺默認值。 –

回答

5

EBCDIC不是一個單一的編碼,它編碼的系列(在這種情況下,所謂的代碼頁),類似於ISO-8859-*是如何編碼的一個家庭:家庭內的編碼分享一半是「基本」字母的代碼(大致以ASCII表示),另一半則不相同。

所以如果你說它存儲在EBCDIC中,你需要告訴我們使用哪個代碼頁

ANSI存在類似的問題:用於編碼時,它指的是Windows默認編碼。不幸的是,Windows安裝的默認編碼可能因所配置的區域設置而異。

所以再次:你需要找出哪裏使用的實際編碼(這些通常是從Windows-*系列,「正常」英文的Windows-1252)。

一旦你真正知道什麼編碼您在每個點要,你可以去朝着第二步:修復它。

對於這類問題我個人喜好是這樣的:只有一個步驟,其中編碼轉換:採取任何初始工具產生並將其轉換爲UTF-8的第一步。從此,始終使用UTF-8處理該數據。如果需要,在最後一步中將UTF-8轉換爲其他編碼(但如果可能,請避免使用此編碼)。