1

助けが必要です。ファイルからデータを読み取り、Oracle データベースに格納する必要があります。データに「à」や「À」などの文字が含まれていると困ります。たとえば、'à' が読み取られてアプリケーションに 'Ã' になるため、データを db に保存しようとすると、db は、保存しようとしているフィールドの値が大きすぎると不平を言うことがあります。私もやってみました

Normalizer.normalize(row, Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

エンコーディングにも気を配りました。Windows マシンでデータ ファイル (Cp1252 ファイル) に対してアプリケーションを実行しても、エラーは発生しませんでした。悲しいことに、Linux マシンで実行するとエラーが発生しました。私はJava 6.TIAを使用しています。

4

1 に答える 1

1

そのため、Windows マシンのデフォルトの文字エンコーディングはおそらく windows-1252 (latin-1 のスーパーセット) です。つまり、ファイルを読み取るときに文字セットを指定しない場合、Java はデフォルトでシステムのデフォルトに設定され、正しく設定されます。

Linux マシンでは、デフォルトの文字セットはおそらく UTF-8 です。つまり、ファイルの読み取り中に文字セットを明示的に指定しないと、デフォルトで UTF-8 になります。. . この場合、これは間違っています。

ファイルで読んでいる方法を投稿しませんでしたが、たとえば:

InputStreamReader isr = new InputStreamReader(file, "UTF-8");

これにより、UTF-8 でフォーマットされたファイルを読み取るための入力ストリーム リーダーが作成されます。

于 2013-02-25T20:03:57.313 に答える