我的CSV导出存在问题。
我创建了一个这样的头文件:
/**
* @param builder
*/
private void createEntete(StringBuilder builder) {
List<String> entetes = new ArrayList<String>();
entetes.add("Date Sélectionnée");
entetes.add("Nom / Prénom des Agents");
entetes.add("Entité des Agents");
entetes.add("Créneaux Mains d'Oeuvre ou de la Tournée");
entetes.add("N° BDT ou Tournée");
entetes.add("Rubrique du BDT");
entetes.add("Type du BDT");
entetes.add("Objet du BDT ou Intitulé de la Disponibilité RH");
entetes.add("Compte-rendu du BDT");
entetes.add("Commune");
entetes.add("Durée du BDT, Tournée ou de l'Activité");
entetes.add("Durée du Dépassement");
entetes.add("Motif du Dépassement");
for (String valeur : entetes) {
ajoutDonnee(valeur, builder);
}
}
我使用的是UTF-8。
我的导出时,特殊字符的编码很差。 我有Ã而不是é。
THX。
答案 0 :(得分:2)
您尚未显示导出/写入数据的代码。
在该代码中,您可以设置合适的编码,例如UTF-8(尽管您的示例文本适用于CP1252)。
请注意,无论您阅读什么输出数据还必须设置为使用相同的编码。
因此,您的数据实际上可能写得很好,但在阅读时看起来不对。
例如,尝试执行此代码:
public static void main(String[] args) throws IOException {
Writer writer = new OutputStreamWriter(new FileOutputStream("out_default.txt"));
writer.write("N° BDT ou Tournée");
writer.close();
writer = new OutputStreamWriter(new FileOutputStream("out_utf8.txt"), "UTF-8");
writer.write("N° BDT ou Tournée");
writer.close();
}
现在尝试在打开文件时打开带有和不带匹配编码集的输出文件。
我的Eclipse默认为CP1252编码。
如果我打开out_default.txt文件,我会看到:
N° BDT ou Tournée
如果我打开out_utf8.txt文件,我会看到:
N° BDT ou Tournée
但是如果我将编辑器的编码设置为UTF8,那么在out_utf8.txt中我会看到:
N° BDT ou Tournée
答案 1 :(得分:-1)
请注意,在Unicode中,像é这样的重音字符有两种可能的表示形式:
U+00E9 lower case latin letter E with acute
U+0065 U+0301 lower case latin letter E, non spacing diacritical mark acute
请注意,您的IDE或您使用的任何编辑器可能会选择第二个表示形式,这将导致另一个UTF-8表示形式。 (@tripleee的反馈表明事实并非如此,尽管可能仍然会发生。)