0

Java アプリケーションで Apache の CSVReader を介して csv ファイルを読み込んでいます。この csv には、「è」などのイタリア語の文字が含まれています。このアプリケーションをローカルの tomcat サーバーで実行すると、そのような文字が正しく読み取られます。しかし、リモートTomcatサーバーに同じアプリケーションをデプロイしているとき。次に、これらの文字を「?」として読み取ります。

注: どちらの場合も、デプロイされたアプリケーションは同じで、CSV ファイルも同じで、同じシステムからアプリケーションにアクセスします。違いは、一方がローカル マシンで実行され、もう一方がリモート マシンで実行されていることだけです。

このファイルを InputStreamreader で読んでいます。誰でも何が問題になるのか考えていますか?

4

2 に答える 2

1

CSVファイルをエンコードする際の文字エンコードを指定し忘れた可能性があります。

http://docs.oracle.com/javase/6/docs/api/java/io/InputStreamReader.html

おそらくこれを InputStreamReader のコンストラクターに指定すると、問題が解決する場合があります。

指定しない場合は、デフォルトの文字エンコーディングが使用されます。これは、ここで指定されているように、Java 仮想マシンに応じて変更される可能性があることを恐れています。

http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/Charset.html#defaultCharset()

于 2013-05-30T16:13:00.880 に答える
0

ロケール設定を比較します。

Linux などのオペレーティング システム レベルでは、次のようになります。

$ echo $LANG de_DE.UTF-8

Java では、システム プロパティの file.encoding を確認します。

file.encoding=[UTF-8]

オペレーティング システムの設定に依存したくない場合は、コードで明示的に文字セットを渡します。

于 2013-05-30T16:20:22.373 に答える