【发布时间】: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", "';'预期”你能解决这个问题吗?