UTF-8编码在opencsv(UTF-8 encoding in opencsv)

2019-11-04 11:46发布

我与opencsv(2.3)工作,我创建包含特殊chracters属性文件中的CSV的头。

余编码使用UTF-8和设置属性作为报头为CSV。

但我仍然看到CSV文件中创建犯规反映编码。

(我用同样的方法使用JasperReports把创建PDF,在那里,我可以看到有特殊字符的列进行编码以及和正常显示)

Java版本:7

属性文件的内容:(E是越来越存储为©和U被存储为那张)

lan.response =名称反应变量

lan.exef =执行

lan.exeg =类型

方法采用CSV:

/* properties file*/
 final File  propertiesFile = new File(System.getProperty("user.home"), "tmp/lan.properties");
 final FileInputStream fis= new FileInputStream(propertiesFile);

 final InputStreamReader inputStreamReader = new InputStreamReader(fis, "UTF-8");

 final Properties properties= new Properties();
 properties.load(inputStreamReader);

 properties.list(System.out);

 /*CSV Header*/
 StringBuilder header = new StringBuilder();
 header.append(properties.get(lan.response)).append(",");
 header.append(properties.get(lan.exef)).append(",");
 header.append(properties.get(lan.execg));

 String[] colHeader = header.split(",");

  FileOutputStream fos =  new FileOutputStream(fileName);
  Writer fw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
  CSVWriter csvWriter = new CSVWriter(fw, ";");

  // add header
  csvWriter.writeNext(colHeader);
  // add data 
  String[] col= new String[3];

   for(Customer c : customerList) {
         col[0] = c.getCustomerName();
         col[1] = c.getCustomerId();
         col[2] = c.getCustomerBirthDate();
         csvWriter.writeNext(col);
   }

   csvWriter.close();

任何人都可以请帮我,我能够看到其他文件格式(例如:PDF)的特殊字符不CSV?

Answer 1:

当运行应用程序与-Dfile.encoding = UTF-8启动它。 你可以看到一些选项这个计算器的问题 。 在这里我担心的是你强迫你的输入和输出是UTF-8,但字符串和StringBuilders你正在创造之间使用的是系统默认的编码,而你的情况似乎是ISO-8859-1。 我想知道如果从UTF-8切换到ISO-8859-1回UTF-8的问题。



文章来源: UTF-8 encoding in opencsv