Oracle DB テーブルからデータを選択し、そのデータを csv ファイルとプレーン パイプで区切られたテキスト ファイルにダンプする必要があります。ユーザーが生成されたcsv /テキストファイルを表示できるように、アプリケーションでユーザーにリンクを提供します。
多くの解析が含まれていたため、Unix シェル スクリプトを作成し、Struts/J2ee アプリケーションから呼び出しています。
以前は、生成されたファイルで中国語とローマ字が失われ、生成されたファイルには us-ascii charset (使用してチェックされた-> file -i) が含まれていました。後で使用する NLS_LANG=AMERICAN_AMERICA.AL32UTF8
と、utf-8 形式のファイルが得られました。
それでも文字が意味不明だったので、iconv コマンドを試して、utf-8 ファイルを utf-16le charset に変換しました。
iconv -f utf-8 -t utf-16le $recordFile > $tempFile
これは、生成されたテキスト ファイルに対して正常に機能します。しかし、CSV では、中国語とローマ字はまだ正しくありません。この csv ファイルをメモ帳で開き、キーボードから Enter キーを押して改行を入力したら、保存します。MS-Excel で開くと、中国語とローマ字を含むすべての文字が正常に表示されますが、テキストは列ではなく行ごとに 1 行になりました。
何が起こっているのかわからない。
Java コード
PrintWriter out = servletResponse.getWriter();
servletResponse.setContentType("application/vnd.ms-excel; charset=UTF-8");
servletResponse.setCharacterEncoding("UTF-8");
servletResponse.setHeader("Content-Disposition","attachment; filename="+ fileName.toString());
FileInputStream fileInputStream = new FileInputStream(fileLoc + fileName);
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
詳細を見逃した場合はお知らせください。これを通過するために時間を割いてくれてありがとう。