diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index d8ddc697..a2aa1a06 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -81,7 +81,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider private final String apiUri; private final int numProductBits; private final String accessId; - private final Charset jsonEncoding; + private Charset jsonGetStopsEncoding; + private Charset jsonNearbyStationsEncoding; private final Charset xmlMlcResEncoding; private boolean dominantPlanStopTime = false; @@ -133,30 +134,37 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } } + public AbstractHafasProvider(final String apiUri, final int numProductBits, final String accessId) + { + this(apiUri, numProductBits, accessId, ISO_8859_1, ISO_8859_1); + } + public AbstractHafasProvider(final String apiUri, final int numProductBits, final String accessId, final Charset jsonEncoding, final Charset xmlMlcResEncoding) { this.apiUri = apiUri; this.numProductBits = numProductBits; this.accessId = accessId; - this.jsonEncoding = jsonEncoding; + this.jsonGetStopsEncoding = jsonEncoding; + this.jsonNearbyStationsEncoding = jsonEncoding; this.xmlMlcResEncoding = xmlMlcResEncoding; } - public AbstractHafasProvider(final String apiUri, final int numProductBits, final String accessId) - { - this.apiUri = apiUri; - this.numProductBits = numProductBits; - this.accessId = accessId; - this.jsonEncoding = ISO_8859_1; - this.xmlMlcResEncoding = ISO_8859_1; - } - protected void setDominantPlanStopTime(final boolean dominantPlanStopTime) { this.dominantPlanStopTime = dominantPlanStopTime; } + protected void setJsonGetStopsEncoding(Charset jsonGetStopsEncoding) + { + this.jsonGetStopsEncoding = jsonGetStopsEncoding; + } + + protected void setJsonNearbyStationsEncoding(Charset jsonNearbyStationsEncoding) + { + this.jsonNearbyStationsEncoding = jsonNearbyStationsEncoding; + } + protected TimeZone timeZone() { return TimeZone.getTimeZone("CET"); @@ -336,7 +344,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider protected final List jsonGetStops(final String uri) throws IOException { - final CharSequence page = ParserUtils.scrape(uri, null, jsonEncoding, null); + final CharSequence page = ParserUtils.scrape(uri, null, jsonGetStopsEncoding, null); final Matcher mJson = P_AJAX_GET_STOPS_JSON.matcher(page); if (mJson.matches()) @@ -2231,7 +2239,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider protected final NearbyStationsResult jsonNearbyStations(final String uri) throws IOException { - final CharSequence page = ParserUtils.scrape(uri, null, jsonEncoding, null); + final CharSequence page = ParserUtils.scrape(uri, null, jsonNearbyStationsEncoding, null); try { diff --git a/enabler/src/de/schildbach/pte/OebbProvider.java b/enabler/src/de/schildbach/pte/OebbProvider.java index 7280ecf9..fdb3d90d 100644 --- a/enabler/src/de/schildbach/pte/OebbProvider.java +++ b/enabler/src/de/schildbach/pte/OebbProvider.java @@ -46,6 +46,7 @@ public class OebbProvider extends AbstractHafasProvider super(API_BASE + "query.exe/dn", 13, null); setDominantPlanStopTime(true); + setJsonGetStopsEncoding(UTF_8); } public NetworkId id()