2011-09-16 16 views
4

私はJExcelライブラリを使用してスプレッドシートを読み取っています。スプレッドシートの各セルには、44言語(英語、ポルトガル語、フランス語、中国語など)のいずれかのローカライズ文字列が含まれている場合があります。今日私は、APIに使用されるはずのエンコーディングについては何も教えていません。それは中国のOKを扱うが、それは常にポルトガル語とドイツ語をねじ込む。どうにかして、デフォルトのエンコーディング(私の開発ボックスのMacRoman、プロダクションのUTF-8)は、Excelブックから取り出した文字列を正しく解釈できません。 JExcelがファイルの文字エンコーディングをどのように解釈しているかには問題があります。Excelスプレッドシートでの文字エンコーディング(およびそれをデコードするために使用するJava文字セット)

言われていること...

は、同じキャラクタ・セットでエンコードされたExcelブック内のすべての文字列はありますか?

ワークブックのメタデータはありますか?私はこの文字セットの内容を聞くことができます(まだ見つかりませんでした)。

jchardet(http://jchardet.sourceforge.net/)のようなものを使ってすべてのセルを実行すると、ブック全体の文字エンコーディングが可能になるでしょうか?最初の質問は「はい、与えられたワークブック内のすべての刺しゅうは同じ文字セットで符号化されています」)ですか?

多くの質問がありますので、時間がほとんどありません。

+0

あなたは '.xls'ファイルを読んでいますか?または '.xlsx'ファイル? –

+0

.xlsファイルです。 xlsxの答えは変わるのですか? –

+0

'.xlsx'ファイルは本当に単なるXMLファイルであり、(私が_think_)は、ファイル全体に対して1つのエンコーディングしかないことを意味します。一方、 '.xls'はバイナリ形式であるため、各セルに独自の文字エンコーディングがあるかどうかはわかりません。 –

答えて

10

まあ、私は直接答えを得ることはありませんでしたが、スペックの点のMattの発見は、実際の答えへの道:平均時間でhttp://sc.openoffice.org/excelfileformat.pdf

は、私の問題は、単に常にするエンコーディングを設定することで、離れて行きました"Cp1252"。なぜ私は正確には分かりませんが、私は口の中で贈り物の馬を見ていないので、話すことができます。

WorkbookSettings workbookSettings = new WorkbookSettings(); 
    workbookSettings.setEncoding("Cp1252"); 
    Workbook.getWorkbook(theFile, workbookSettings); 

私はこれを答えます。

+0

http://stackoverflow.com/questions/508558/what-c​​harset-does-microsoft-excel-use-when-saving-filesこちらの追加情報もあります。 – VonC

+0

あなたの答えは私のPHPプログラムで時間を節約しました...ありがとう –

0

私は、Excelのファイルからセルの値を読み取っているときに、 "?"これはアクセント付きの文字に対応しています...このコードはこの問題を解決しますか?私がWindowsの下で走っているとき、私はLinuxの下で(私が配備しているサーバーのSOだから)速くテストすることができないので...

関連する問題