diff options
| author | SammysHP <sven@sammyshp.de> | 2013-03-18 13:03:05 -0700 |
|---|---|---|
| committer | SammysHP <sven@sammyshp.de> | 2013-03-18 13:03:05 -0700 |
| commit | b41e4b1560bbad8e565cefcbcb8b910614e93645 (patch) | |
| tree | 2bf2f941cedfc69e049262ea4708b1e206a2d73e | |
| parent | d760beed1625442fe268f05193556e37a4a7da5a (diff) | |
| parent | fb6ae7ff0528ff60a561d4eab00e55ad7acf3a2b (diff) | |
| download | cgeo-b41e4b1560bbad8e565cefcbcb8b910614e93645.zip cgeo-b41e4b1560bbad8e565cefcbcb8b910614e93645.tar.gz cgeo-b41e4b1560bbad8e565cefcbcb8b910614e93645.tar.bz2 | |
Merge pull request #2580 from koem/issue2538-utf8
Fixes #2538 - German Umlauts in image caption and description
| -rw-r--r-- | main/src/cgeo/geocaching/connector/gc/GCParser.java | 17 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/network/Network.java | 12 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/HtmlUtils.java | 26 | ||||
| -rw-r--r-- | tests/src/cgeo/geocaching/utils/HtmlUtilsTest.java | 11 |
4 files changed, 17 insertions, 49 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java index 9561b87..9af9953 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCParser.java +++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java @@ -30,7 +30,6 @@ import cgeo.geocaching.network.Parameters; import cgeo.geocaching.ui.DirectionImage; import cgeo.geocaching.utils.BaseUtils; import cgeo.geocaching.utils.CancellableHandler; -import cgeo.geocaching.utils.HtmlUtils; import cgeo.geocaching.utils.Log; import cgeo.geocaching.utils.MatcherWrapper; @@ -929,13 +928,11 @@ public abstract class GCParser { return new ImmutablePair<StatusCode, String>(StatusCode.NO_LOG_TEXT, ""); } - final String logInfo = HtmlUtils.convertNonLatinCharactersToHTML(log).replace("\n", "\r\n").trim(); // windows' eol and remove leading and trailing whitespaces + final String logInfo = log.replace("\n", "\r\n").trim(); // windows' eol and remove leading and trailing whitespaces - if (trackables != null) { - Log.i("Trying to post log for cache #" + cacheid + " - action: " + logType + "; date: " + year + "." + month + "." + day + ", log: " + logInfo + "; trackables: " + trackables.size()); - } else { - Log.i("Trying to post log for cache #" + cacheid + " - action: " + logType + "; date: " + year + "." + month + "." + day + ", log: " + logInfo + "; trackables: 0"); - } + Log.i("Trying to post log for cache #" + cacheid + " - action: " + logType + + "; date: " + year + "." + month + "." + day + ", log: " + logInfo + + "; trackables: " + (trackables != null ? trackables.size() : "0")); final Parameters params = new Parameters( "__EVENTTARGET", "", @@ -1083,8 +1080,8 @@ public abstract class GCParser { final Parameters uploadParams = new Parameters( "__EVENTTARGET", "", "__EVENTARGUMENT", "", - "ctl00$ContentBody$ImageUploadControl1$uxFileCaption", HtmlUtils.convertNonLatinCharactersToHTML(caption), - "ctl00$ContentBody$ImageUploadControl1$uxFileDesc", HtmlUtils.convertNonLatinCharactersToHTML(description), + "ctl00$ContentBody$ImageUploadControl1$uxFileCaption", caption, + "ctl00$ContentBody$ImageUploadControl1$uxFileDesc", description, "ctl00$ContentBody$ImageUploadControl1$uxUpload", "Upload"); Login.putViewstates(uploadParams, viewstates); @@ -1117,7 +1114,7 @@ public abstract class GCParser { Log.i("Trying to post log for trackable #" + trackingCode + " - action: " + logType + "; date: " + year + "." + month + "." + day + ", log: " + log); - final String logInfo = HtmlUtils.convertNonLatinCharactersToHTML(log).replace("\n", "\r\n"); // windows' eol + final String logInfo = log.replace("\n", "\r\n"); // windows' eol final Calendar currentDate = Calendar.getInstance(); final Parameters params = new Parameters( diff --git a/main/src/cgeo/geocaching/network/Network.java b/main/src/cgeo/geocaching/network/Network.java index a4155be..eb6a6ac 100644 --- a/main/src/cgeo/geocaching/network/Network.java +++ b/main/src/cgeo/geocaching/network/Network.java @@ -47,6 +47,7 @@ import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; +import java.nio.charset.Charset; public abstract class Network { @@ -59,6 +60,13 @@ public abstract class Network { private static final String PATTERN_PASSWORD = "(?<=[\\?&])[Pp]ass(w(or)?d)?=[^&#$]+"; + /** + * charset for requests + * + * @see "http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/Charset.html" + */ + private static final Charset CHARSET_UTF8 = Charset.forName("UTF-8"); + private final static HttpParams clientParams = new BasicHttpParams(); static { @@ -187,11 +195,11 @@ public abstract class Network { * @return the HTTP response, or null in case of an encoding error param */ public static HttpResponse postRequest(final String uri, final Parameters params, - final String fileFieldName, final String fileContentType, final File file) { + final String fileFieldName, final String fileContentType, final File file) { final MultipartEntity entity = new MultipartEntity(); for (final NameValuePair param : params) { try { - entity.addPart(param.getName(), new StringBody(param.getValue())); + entity.addPart(param.getName(), new StringBody(param.getValue(), CHARSET_UTF8)); } catch (final UnsupportedEncodingException e) { Log.e("Network.postRequest: unsupported encoding for parameter " + param.getName(), e); return null; diff --git a/main/src/cgeo/geocaching/utils/HtmlUtils.java b/main/src/cgeo/geocaching/utils/HtmlUtils.java index 07bf20f..8d4eed1 100644 --- a/main/src/cgeo/geocaching/utils/HtmlUtils.java +++ b/main/src/cgeo/geocaching/utils/HtmlUtils.java @@ -52,30 +52,4 @@ public class HtmlUtils { // some line breaks are still in the text, source is unknown return StringUtils.replace(result, "<br />", "\n").trim(); } - - /** - * Convert any non-Latin characters into HTML unicode entities - * - * @param input - * String - * @return output String - */ - public static String convertNonLatinCharactersToHTML(final String input) { - final int inputLen = input.length(); - final StringBuilder output = new StringBuilder(); - - for (int i = 0; i < inputLen; i++) { - char c = input.charAt(i); - - if (c > 127) { - output.append("&#"); - output.append(Integer.toString(c)); - output.append(';'); - } else { - output.append(c); - } - } - - return output.toString(); - } } diff --git a/tests/src/cgeo/geocaching/utils/HtmlUtilsTest.java b/tests/src/cgeo/geocaching/utils/HtmlUtilsTest.java deleted file mode 100644 index 52b816e..0000000 --- a/tests/src/cgeo/geocaching/utils/HtmlUtilsTest.java +++ /dev/null @@ -1,11 +0,0 @@ -package cgeo.geocaching.utils; - -import junit.framework.TestCase; - -public class HtmlUtilsTest extends TestCase { - - public static void testNonLatinCharConv() { - final String res = HtmlUtils.convertNonLatinCharactersToHTML("abcΦςቡぢれ"); - assertEquals("abcΦςቡぢれ", res); - } -} |
