Java 从.csv文件解析的字符串在kml文件中是无效的标记。我怎样才能解决这个问题?

Java 从.csv文件解析的字符串在kml文件中是无效的标记。我怎样才能解决这个问题?,java,csv,Java,Csv,我有一个代码,可以解析CSV.-文件中包含twitter数据的字符串,并将其提供给新的KML文件。当我解析来自twitter数据的评论时,当然会有一些未知的标记,比如:ðŸš。当我在Google Earth中打开新的KML文件时,由于这个未知的标记,我得到了一个错误。 问题: 当我解析字符串时,我能告诉java它应该从字符串中抛出所有未知标记,这样我的KML中就没有任何未知标记了吗 多谢各位 代码如下: String csvFile = "twitter.csv"; BufferedR

我有一个代码,可以解析CSV.-文件中包含twitter数据的字符串,并将其提供给新的KML文件。当我解析来自twitter数据的评论时,当然会有一些未知的标记,比如:ðŸš。当我在Google Earth中打开新的KML文件时,由于这个未知的标记,我得到了一个错误。 问题: 当我解析字符串时,我能告诉java它应该从字符串中抛出所有未知标记,这样我的KML中就没有任何未知标记了吗

多谢各位

代码如下:

String csvFile = "twitter.csv";
    BufferedReader br = null;
    String line = "";
    String cvsSplitBy = ";";
    String[] twitter = null;
    int row_desired = 0;
    int row_counter = 0;
    String[] placemarks = new String[1165];
    // ab hier einlesen der CSV
    try {

        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {
            if (row_counter++ == row_desired) {
                twitter = line.split(cvsSplitBy);
                placemarks[row_counter] = 
                        "<Placemark>\n"+
                        "<name>User ID: "+twitter[7]+"</name>\n"+
                        "<description>This User wrote: "+twitter[5]+" at the: "+twitter[6]+"</description>\n"+
                        "<Point>\n"+
                        "<coordinates>"+twitter[1]+","+twitter[2]+"</coordinates>\n"+
                        "</Point>\n"+
                        "</Placemark>\n";
                row_desired++;
            }

        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    for(int i = 2; i <= 1164;i++){

    String kml2 = kml.concat(""+placemarks[i]+"");
    kml=kml2;
    }
    kml = kml.concat("</Document></kml>");

    FileWriter fileWriter = new FileWriter(filepath);
    fileWriter.write(kml);
    fileWriter.close();

    Runtime.getRuntime().exec(googlefilepath + filepath);

}

<>文本文件并不是所有的都是相同的:必须始终考虑使用什么字符编码。我不确定Twitter的具体数据,但我猜他们和世界其他地方一样使用UTF-8

基本上,避免使用FileReader,而是使用InputStreamReader的构造函数,它允许您指定字符集

提示:如果您使用的是Java 7+,请尝试以下方法:

for (String line : Files.readAllLines(file.toPath(), Charset.forName("UTF-8"))) { ...
更多信息

FileReader的javadoc声明此类的构造函数假定默认字符编码


你应该永远避免上这门课。或者至少对于可能在计算机之间传输的任何数据。即使是在Windows上运行的使用默认字符集的程序,在Eclipse内部运行时也会采用UTF-8,在Eclipse外部运行时也会采用ISO_8859_1!类中的这种非确定性是不好的。

哦,请使用CSV库,例如OpenCSV。即使使用这种简单的格式,也会遇到一些棘手的问题:一些字段引用,一些不引用,双引号转义序列,以及包含新行字符的字段。谢谢您的帮助。注释中有&个字符,它们是XML中的运算符,导致了解析错误。所以这不是编码的问题。但我现在会使用inputstreamreader,你说服了我;。好的,很高兴你把它整理好了!