aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSammysHP <sven@sammyshp.de>2013-03-18 13:03:05 -0700
committerSammysHP <sven@sammyshp.de>2013-03-18 13:03:05 -0700
commitb41e4b1560bbad8e565cefcbcb8b910614e93645 (patch)
tree2bf2f941cedfc69e049262ea4708b1e206a2d73e
parentd760beed1625442fe268f05193556e37a4a7da5a (diff)
parentfb6ae7ff0528ff60a561d4eab00e55ad7acf3a2b (diff)
downloadcgeo-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.java17
-rw-r--r--main/src/cgeo/geocaching/network/Network.java12
-rw-r--r--main/src/cgeo/geocaching/utils/HtmlUtils.java26
-rw-r--r--tests/src/cgeo/geocaching/utils/HtmlUtilsTest.java11
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&#934;&#962;&#4705;&#12386;&#12428;", res);
- }
-}