diff --git a/source/java/org/alfresco/web/scripts/FormData.java b/source/java/org/alfresco/web/scripts/FormData.java index 9288bdeb6b..3ef42940ab 100644 --- a/source/java/org/alfresco/web/scripts/FormData.java +++ b/source/java/org/alfresco/web/scripts/FormData.java @@ -26,6 +26,7 @@ package org.alfresco.web.scripts; import java.io.IOException; import java.io.Serializable; +import java.io.UnsupportedEncodingException; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -33,6 +34,7 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; +import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.repo.jscript.Scopeable; import org.alfresco.repo.jscript.ScriptNode; import org.alfresco.repo.jscript.ScriptNode.ScriptContent; @@ -60,7 +62,9 @@ public class FormData implements Serializable, Scopeable private Map fields = null; private Map parameters = null; private Map files = null; - + private List files = null; + private String encoding = null; + /** * Construct * @@ -146,6 +150,8 @@ public class FormData implements Serializable, Scopeable { FileItemFactory factory = new DiskFileItemFactory(); upload = new ServletFileUpload(factory); + encoding = req.getCharacterEncoding(); + upload.setHeaderEncoding(encoding); try { List fileItems = upload.parseRequest(req); @@ -262,8 +268,15 @@ public class FormData implements Serializable, Scopeable */ public String getValue() { - return file.getString(); - } + try + { + return (file.isFormField() && encoding != null) ? file.getString(encoding) : file.getString(); + } + catch (UnsupportedEncodingException e) + { + throw new AlfrescoRuntimeException("Unable to decode form field", e); + } + } public String jsGet_value() { diff --git a/source/java/org/alfresco/web/scripts/WebScriptServlet.java b/source/java/org/alfresco/web/scripts/WebScriptServlet.java index 1ac920e912..42d822967a 100644 --- a/source/java/org/alfresco/web/scripts/WebScriptServlet.java +++ b/source/java/org/alfresco/web/scripts/WebScriptServlet.java @@ -104,7 +104,10 @@ public class WebScriptServlet extends HttpServlet { if (logger.isDebugEnabled()) logger.debug("Processing request (" + req.getMethod() + ") " + req.getRequestURL() + (req.getQueryString() != null ? "?" + req.getQueryString() : "")); - + if (req.getCharacterEncoding() == null) + { + req.setCharacterEncoding("UTF-8"); + } WebScriptRuntime runtime = new WebScriptServletRuntime(registry, serviceRegistry, authenticator, req, res, serverConfig); runtime.executeScript(); }