【问题标题】:java kml doesn't read greek charactersjava kml 不读取希腊字符
【发布时间】:2014-05-12 18:41:27
【问题描述】:

我想为我将在下面显示的问题寻求解决方案。 我用 kml.unmarshal 读取了一个包含希腊字符的 kml 文件,我收到这些字符 ΔΗΞ�Ξ�ΣΙΞ�Ξ™ ΧΩΡΞ�Ξ™

    final Kml kml = Kml.unmarshal(new File("something.kml"));
    final de.micromata.opengis.kml.v_2_2_0.Document document = (de.micromata.opengis.kml.v_2_2_0.Document) kml.getFeature();
    List<Feature> t = document.getFeature();
    for (Object o : t) {
        PointOfInterest poi = new PointOfInterest();

        Folder f = (Folder) o;
        List<Feature> tg = f.getFeature();
        for (Object ftg : tg) {

            Placemark g = (Placemark) ftg;
            ExtendedData extdat = g.getExtendedData();
            List<SchemaData> list = extdat.getSchemaData();
            List<SimpleData> list2 = list.get(0).getSimpleData();
            for (int i = 0; i < list2.size(); i++) {
                SimpleData dat = list2.get(i);
                //  System.out.println(dat.getName() + "  -  " + dat.getValue());
                if (dat.getName().equals("newcat"))
                   if (dat.getValue().equalsIgnoreCase("Ελληνικοι χαρακτηρες"){...}}}

代码不是我的,我试图找出为什么 dat.getvalue 有以下内容 ΔΗΞ�Ξ�ΣΙΞ�Ξ™ ΧΩΡΞ�Ξ™ 当它有希腊字符。

编辑:

我尝试使用

final Kml kml = Kml.unmarshal(new FileInputStream(new File("something.kml")), "UTF8"))

我收到以下错误。知道为什么吗?

没有找到适合 unmarshal(FileInputStream,String) 的方法 方法 Kml.unmarshal(InputStream) 不适用 (实际参数列表和形式参数列表的长度不同) 方法 Kml.unmarshal(String) 不适用 (实际参数列表和形式参数列表的长度不同) 方法 Kml.unmarshal(File) 不适用 (实际参数列表和形式参数列表的长度不同) 方法 Kml.unmarshal(File,boolean) 不适用 (实参FileInputStream无法通过方法调用转换为File)

未报告的异常 FileNotFoundException;必须被抓住或宣布被扔掉

';'预计

【问题讨论】:

  • 您在读取 ​​XML 时显然没有指定正确的编码...
  • 这是一个编码问题。你在哪里看到 unmarschal 之后的那些字符?您是否在其他地方打印/显示它们?
  • 我该怎么做?我使用 final Kml kml = Kml.unmarshal(new File("something.kml"));最终 de.micromata.opengis.kml.v_2_2_0.Document 文档 = (de.micromata.opengis.kml.v_2_2_0.Document) kml.getFeature();
  • 试试看Kml(我不知道API)是否有接受Reader作为参数的方法;配置 Reader 以使用正确的编码
  • 你能写下你是进口的吗?您还尝试过其他建议吗? "未报告的异常 FileNotFoundException", "';'预期”你能解决这个问题吗?

标签: java kml


【解决方案1】:

在页面: http://labs.micromata.de/projects/jak/quickstart.html 您可能还会看到 xml 中指定了编码:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

当他们使用时:

final Kml kml = Kml.unmarshal(new File("HelloKml.kml"));

可能是这样的。

【讨论】:

  • 我的错。那是无效的。已编辑 - 现在应该没问题了。 nilab.info/docs/jak091130/de/micromata/opengis/kml/v_2_2_0/…
  • 我尝试了 konradOliwer 的建议,但收到了我在第一篇文章中提到的错误。请检查一下吗?
  • Errr,使用 FileInputStream 时不能指定编码
  • 如果没有文件输入流怎么办?
  • 谷歌点@fge。对不起,我一定是累了,我忘了添加 InputStreamReader。希望现在没事
猜你喜欢
  • 2015-07-15
  • 1970-01-01
  • 2016-04-02
  • 2013-09-30
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
相关资源
最近更新 更多