Java 在servlet中基于输入参数更改编码
我已经将Kannel配置为向我的servlet发送消息。URL如下所示:Java 在servlet中基于输入参数更改编码,java,servlets,kannel,Java,Servlets,Kannel,我已经将Kannel配置为向我的servlet发送消息。URL如下所示: http://10.10.10.10/income/Submit?from=%p&to=%P&content=%a&encoding=%C 问题是编码是UTF-8用于英文邮件,而UTF-16BE用于波斯邮件。我的servlet类似于: protected void doGet(HttpServletRequest request, HttpServletResponse response) thr
http://10.10.10.10/income/Submit?from=%p&to=%P&content=%a&encoding=%C
问题是编码
是UTF-8
用于英文邮件,而UTF-16BE
用于波斯邮件。我的servlet类似于:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String to = request.getParameter("to");
String from = request.getParameter("from");
String content = request.getParameter("content");
/* process message here */
}
使用此代码,我无法获取波斯语消息。(它们被转换为
ASCII
)。当我转换request.setCharacterEncoding(“UTF-8”)代码>到请求.setCharacterEncoding(“UTF-16BE”)
,我得到所有变量的null
。有谁能帮助我如何根据编码
字段将转换为,从
,内容
?我使用Glassfish 3.1.2.2作为容器。在Kannel中,您可以在smsbox
组中将mo recode
设置为1。这将告诉Kannel在发送到HTTP服务之前自动将文本MO消息转换为UTF-8字符集
只要确保您的Kannel是使用iconv支持构建的。在Kannel中,您可以在smsbox
组中将mo recode
设置为1。这将告诉Kannel在发送到HTTP服务之前自动将文本MO消息转换为UTF-8字符集
只要确保您的Kannel是使用iconv支持构建的。事实上,您必须确保UTF-8
存在于三个地方!确保他们都在那里。下面是一个很好的解释:在Glassfish上,request.setCharacterEncoding()
对GET查询字符串完全没有影响。它只影响请求后正文。据我所知,JBoss As>=7是唯一一个允许您通过其standalone.xml
配置为使用相同的POST请求正文编码来解码GET查询字符串的服务器。但在所有其他系统上,您必须分别显式配置它。因此,在您的问题中,您暗示更改请求后正文编码对GET查询字符串解码有影响,这有点可疑。你真的做了正确的观察吗?事实上,你必须确保UTF-8
存在于三个地方!确保他们都在那里。下面是一个很好的解释:在Glassfish上,request.setCharacterEncoding()
对GET查询字符串完全没有影响。它只影响请求后正文。据我所知,JBoss As>=7是唯一一个允许您通过其standalone.xml
配置为使用相同的POST请求正文编码来解码GET查询字符串的服务器。但在所有其他系统上,您必须分别显式配置它。因此,在您的问题中,您暗示更改请求后正文编码对GET查询字符串解码有影响,这有点可疑。你真的做了正确的观察吗?