1

韓国語の文字をファイルに書き込もうとしていますが、CSV で開いたときに韓国語のデータとして表示するために回避する必要がある意味不明なデータを書き込んでいます。UTF-8 にデコードして韓国語のデータを表示するという回避策なしで、どうすれば要件を達成できますか。

    File localExport = File.createTempFile("char-test", ".csv");
    try (
            FileOutputStream fos = new FileOutputStream(localExport);
            BufferedOutputStream bos = new BufferedOutputStream(fos);
            OutputStreamWriter outputStreamWriter =
                    new OutputStreamWriter(bos, StandardCharsets.UTF_8)
    ) {
        ArrayList<String> rows = new ArrayList<>();
        rows.add("\"가짜 사용자\",사용자123,saint1_user123");
        rows.add("\"페이크유저루노도스트레스 성도1\",saint1_user1");
        for (int i=0; i<2; i++) {
            String csvUserStr = rows.get(i);
            outputStreamWriter.write(csvUserStr);
        }
    }

実際にファイルに書き込んでいるデータではなく、以下のデータを書き込んでいます。

引用符

4

3 に答える 3

0

前述のように、Excel はテキストが UTF-8 でエンコードされていることを検出できません。1 つの解決策は、目に見えない BOM 文字を最初の文字として書き込むことです。

  outputStreamWriter.write("\uFEFF");
  for...

これは通常、さまざまな UTF エンコーディングの余分で醜いマーカーです。

ところで、クラス Files を見てみましょう。これにより、コードを 1 行に減らすことができます。

于 2021-08-06T19:07:20.247 に答える