我想问一下我将在下面显示的问题的解决方案。 我读了一个带有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具有以下内容Ξ“Ξ-ΠΠΣΙΠΙΧΩwhen™当它有希腊字符。
修改
我尝试使用
最终Kml kml = Kml.unmarshal(新FileInputStream(新文件(“something.kml”)),“UTF8”))
我收到以下错误。想知道为什么?
没有为unmarshal找到合适的方法(FileInputStream,String) 方法Kml.unmarshal(InputStream)不适用 (实际和正式的参数列表长度不同) 方法Kml.unmarshal(String)不适用 (实际和正式的参数列表长度不同) 方法Kml.unmarshal(File)不适用 (实际和正式的参数列表长度不同) 方法Kml.unmarshal(File,boolean)不适用 (实际参数FileInputStream无法通过方法调用转换转换为File)
未报告的异常FileNotFoundException;必须被抓住或宣布被抛出
';'预期
答案 0 :(得分:0)
在页面上: 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"));
情况确实如此。