1

JavaでCSVファイルを読み取る必要があり、スーパーCSVライブラリで実行しています。テキスト エディター (Windows または Linux の両方) で CSV ファイルを開くと、次のような行が表示されます。

6;;07/01/1939;58;22;47;49;69;  -   ;  -   ;  -   ;  -   ;  -   ;

「 - 」を含むように見えるセルは、Linux では Java から「� - �」として読み取られ、Windows では「á - á」として読み取られます。比較を行う必要があるため、正しい表現が必要です。現在、文字列変数 = "\uFFFD - \uFFFD " (Linux で開発したため) を初期化していますが、このコードは Windows では機能しません。

最初にファイルを読み取って文字をチェックする (現在のファイルに文字が含まれていない) か、OS に基づいて文字列を初期化する (これを一時的な解決策として実装します) 以外の解決策はありますか?

4

1 に答える 1

2

CSV ファイルが実際にどのエンコーディングであるかを知っておく必要があります。

それを正しく表示するテキスト エディタで開くと、そのエディタでどのエンコーディングが使用されているかがわかります。(たとえば、notepad++ のエンコーディング メニュー項目など)。

Javaで読み取るときに指定できます。

utf-8 を使用した例:

FileInputStream fis = new FileInputStream("test.txt"); 
InputStreamReader in = new InputStreamReader(fis, "UTF-8");

また

Scanner scanner = new Scanner(file, "UTF-8");

問題は、Windows と Linux で異なるデフォルト文字セットが使用されている可能性があります。

(参照: http://www.javapractices.com/topic/TopicAction.do?Id=42、ここに記載されている: FileReader および FileWriter クラスは、システムのデフォルトの文字エンコーディングを暗黙的に使用するため、少し注意が必要です。 )

于 2013-02-26T15:29:52.163 に答える