Daniel Beck commented on Bug JENKINS-11543

hudson-behavior.js seems to build a UTF-8 encoded JSON string, while the browser sets no charset, making it to default to Latin 1 when parsed on the server.

Not sure who's to blame here (although I'd tentatively guess YUI/behavior should make sure the browser sets a charset for all the multipart text parts), but the following patch in Stapler works for me by simply parsing the JSON string in multipart form data as UTF-8 if no other charset is set:

$ git diff
diff --git a/core/src/main/java/org/kohsuke/stapler/RequestImpl.java b/core/src/main/java/org/kohsuke/stapler/RequestImpl.java
index b8fb81c..230cef2 100644
--- a/core/src/main/java/org/kohsuke/stapler/RequestImpl.java
+++ b/core/src/main/java/org/kohsuke/stapler/RequestImpl.java
@@ -852,8 +852,19 @@ public class RequestImpl extends HttpServletRequestWrapper implements StaplerReq
                 isSubmission=true;
                 parseMultipartFormData();
                 FileItem item = parsedFormData.get("json");
-                if(item!=null)
-                    p = item.getString();
+                if(item!=null) {
+                    if (item.getContentType() == null) {
+                        // JENKINS-11543: Client doesn't set charset per part, so
+                        // default to UTF-8 if no other charset is specified.
+                        try {
+                            p = item.getString("UTF-8");
+                        } catch (java.io.UnsupportedEncodingException uee) {
+                            throw new AssertionError("UTF-8 unsupported")
+                        }
+                    } else {
+                        p = item.getString();
+                    }
+                }
             } else {
                 p = getParameter("json");
                 isSubmission = !getParameterMap().isEmpty();

Of course anything not relying on structured form submission will continue to be broken.

Asked KK on IRC where to file issues with Stapler, as the GitHub issue tracker seems abandoned.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators.
For more information on JIRA, see: http://www.atlassian.com/software/jira

--
You received this message because you are subscribed to the Google Groups "Jenkins Issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-issues+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to