与Item Reader一起使用的正确编码是什么

本教程将介绍与Item Reader一起使用的正确编码是什么的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

与Item Reader一起使用的正确编码是什么 教程 第1张

问题描述

我正在使用Spring Batch读取CSV文件,当我用Notepad++打开这些文件时,我看到使用的编码是encode in ANSI
现在,当从文件中读取一行时,我注意到所有重音字符都不能正确显示。例如,我们取这一行:

Données issues de la reprise des données

它被转换成这样,带有一些特殊字符:

因此,作为第一个解决方案,我将Item Reader的编码设置为utf-8,但问题仍然存在。

    我以为通过UTF-8编码,我所有的重音字符都会被识别,不是吗?据我所知,例如,UTF-8是处理网页上所有字符的最佳编码吗?

将我的项目阅读器编码设置为ISO-8859-1之后:

public class TestItemReader extends FlatFileItemReader<TestFileRow> {

 private static final Logger log = LoggerFactory.getLogger(TestItemReader.class);
 public ScelleItemReader(String path) {

  this.setResource( new FileSystemResource(path + "/Test.csv"));
  this.setEncoding("ISO-8859-1");

我看不到这些字符现在显示正确。

    作为输出我应该使用utf-8作为编码,如果我使用ISO-8859-1作为编码输入,utf-8作为输出,这是正确的吗?

推荐答案

我遇到了同样的问题。输入文件为ANSI,"ü"在输出中显示为正方形。

这是因为您的输入文件是用ANSI编码的,但默认情况下,Spring Batch assumes ISO-8859-1 encoding(6.6.2 FlatFileItemReader)。

因此,您必须将阅读器的编码设置为"Cp1252"(setEncoding("Cp1252"))-that's how Java refers to ANSI encoding.

此外,您还必须将编写器的编码设置为"utf-8"。我不完全确定为什么它不能与其他编码(通常能够显示"ü",如ISO-8859-1)一起工作,但它与UTF-8一起工作,所以这就是我正在使用的。

好了关于与Item Reader一起使用的正确编码是什么的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。