我看到很多像我一样的问题,但没有一个答案有效...这就是事情:我想从请求中获取我的参数(带重音的字符),但它不起作用.我试过用户,request.setCharacterEncoding( "UTF-8" )但它也没用.
我知道URLDecoder.decode( request.getQueryString(), "UTF-8" )返回权限字符但request.getParameterValues()不起作用!有没有人有想法?
谢谢
我有一个JSP页面编码的页面ISO-8859-1.这个JSP页面有一个问题答案博客.我希望在Q/A发布期间包含特殊字符.
问题是JSP不支持UTF-8编码,即使我已将其更改ISO-8859-1为UTF-8.这些字符(~,%,&,+)正在问题.当我单独或使用任何字符的组合发布这些字符时,它null在数据库中是storinh ,当我在发布应用程序时删除这些字符时它工作正常.
任何人都能提出一些解决方案吗
我正在创建一个简单的登录页面,我想将登录和密码参数作为UTF-8编码的字符串传递.正如你在下面的代码中看到的那样,第一行是我将编码设置为UTF-8的地方,但它似乎毫无意义,因为它不起作用.当我使用带重音的登录名和密码参数时,结果页面会收到奇怪的字符.
如何以适用于所有浏览器的方式正确设置字符编码?
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My Page</title>
</head>
<body>
<h1>Welcome to My Page</h1>
<form name="login" action="login.jsp" method="POST">
Login:<br/>
<input type="text" name="login" value="" /><br/>
Password:<br/>
<input type="password" name="password" value="" /><br/>
<br/>
<input type="submit" value="Login" /><br/>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我有一个基于tomcat的应用程序,需要提交一个能够处理utf-8字符的表单.通过ajax提交时,数据从utf-8中的getParameter()正确返回.通过表单发布提交时,数据将从iso-8859-1中的getParameter()返回.
我使用了fiddler,并确定了请求的唯一区别,就是在ajax调用中将charset = utf-8附加到Content-Type头的末尾(正如预期的那样,因为我明确地发送了内容类型).
来自ajax的ContentType:"application/x-www-form-urlencoded; charset = utf-8"
来自表单的ContentType:"application/x-www-form-urlencoded"
我有以下设置:
ajax post(正确输出字符):
$.ajax( {
type : "POST",
url : "blah",
async : false,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data : data,
success : function(data) {
}
});
Run Code Online (Sandbox Code Playgroud)
表格帖子(在iso中输出字符)
<form id="leadform" enctype="application/x-www-form-urlencoded; charset=utf-8" method="post" accept-charset="utf-8" action="{//app/path}">
Run Code Online (Sandbox Code Playgroud)
xml声明:
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
文档类型:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)
元标记:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
Run Code Online (Sandbox Code Playgroud)
jvm参数:
-Dfile.encoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用request.setCharacterEncoding("UTF-8"); 但似乎tomcat只是忽略了它.我没有使用RequestDumper阀门.
根据我的阅读,POST数据编码主要取决于表单所在的页面编码.据我所知,我的页面在utf-8中正确编码.
此页面中的示例JSP正常工作.它只使用setCharacterEncoding("UTF-8"); 并回复您发布的数据. http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
总而言之,post请求不会将charset作为utf-8发送,尽管页面在utf-8中,表单参数指定utf-8,xml声明或其他任何内容.我已经花了三天的时间来完成这项工作,但我的想法已经不多了.谁能帮我?
我已经访问了HTML中关于UTF-8编码的每一个问题,似乎没有任何东西像预期的那样工作.
我添加了meta标签:没有改变.
我添加了accept-charset属性form:没有改变.
<%@ page pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Editer les sous-titres</title>
</head>
<body>
<form method="post" action="/Subtitlor/edit" accept-charset="UTF-8">
<h3 name="nameOfFile"><c:out value="${ nameOfFile }"/></h3>
<input type="hidden" name="nameOfFile" id="nameOfFile" value="${ nameOfFile }"/>
<c:if test="${ !saved }">
<input value ="Enregistrer le travail" type="submit" style="position:fixed; top: 10px; right: 10px;" />
</c:if>
<a href="/Subtitlor/" style="position:fixed; top: 50px; right: 10px;">Retour à la page d'accueil</a>
<c:if test="${ …Run Code Online (Sandbox Code Playgroud) 我在JSP页面中有这样一个链接,编码为big5 http:// hello/world?name =婀ㄉ 当我在浏览器的URL栏中输入它时,它将被改为 http:// hello/world?name = %23%24%23 当我们想在jsp页面中获取此参数时,所有字符都已损坏.
我们设置了这个:request.setCharacterEncoding("UTF-8"),因此所有请求都将转换为UTF8.
但为什么在这种情况下,它不起作用?提前致谢!.
在使用JSF和EclipseLink JPA到MySQL数据库的Web应用程序中,我遇到了很大的问题.
当我从数据库中读取数据时,JSF以UTF-8读取和写入我的字符串.但在数据库中字符很糟糕.
fe:输入字符:"żźćółzxcv",写在数据库中:"????? zxcv".但是如果我手动将数据写入数据库,例如:"żźćółzxcv",那么在JSF中读取是完美的.
我从这里尝试了一切:通过PrimeFaces输入组件检索的Unicode输入被破坏
我发现JSF中的编码很好,但问题出在java中,因为如果我手动设置的话
current.setUwagiZ("???ó??????ó???? TE");
getFacade().edit(current);
Run Code Online (Sandbox Code Playgroud)
在数据库记录中是错误的: ???ó??????ó???? TE
我在JDBC Resource中设置了characterEncoding和useUnicode.此外,当NetBeans编码中的某些工具执行命令正常并且MySQL中的数据为UTF-8时,连接似乎很好.
所以问题是java,但我完全不知道如何解决这个问题:(
如何使servlet接受从JSP传递的非ascii(阿拉伯语,中文等)字符?
我试图将以下内容添加到JSP的顶部:
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
Run Code Online (Sandbox Code Playgroud)
并在servlet中的每个post/get方法中添加以下内容:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
Run Code Online (Sandbox Code Playgroud)
我试图添加一个Filter来执行上面两个语句而不是servlet.
说实话,过去这些都在起作用,但现在它不再起作用了.
我在Win和Linux机器上的JDK1.6上使用tomcat 5.0.28/6.xx.
这是一个例子:JSP页面:
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Push Engine</title>
</head>
<body>
Hello ${requestScope['val']}
<form action="ControllerServlet" method="POST">
<table>
<tr>
<td>ABC</td>
<td><input name="ABC" type="text" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Submit"></td>
</tr>
</table>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Servlet doGet方法:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String val = "request.getParameter('ABC') : " + request.getParameter("ABC");
System.out.println(val);
request.setAttribute("val", val);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
Run Code Online (Sandbox Code Playgroud)
问题是: 在控制台中,值"???" 然而,正在打印的值返回到包含正确Unicode字的JSP页面
"???" …
我一直在尝试这项工作但到目前为止还没有运气.我不清楚最新情况,但我会尽力解释.我的服务器端jsp页面都使用ISO-8859-1编码,我不想改变.所有请求/响应都是xml格式.POST请求当前正在使用javascript escapeURIComponent函数,一切都运行良好,直到有一个特殊字符,例如字符串:hello°world©®™test.当这个字符串escapeURIComponent从IE中被POST(与数据部分一起),并且当重新加载页面时应该获得相同的字符串,该字符串将呈现为:hello°world©’¢test
我假设发生这种情况是因为encodeURIComponent函数将字符串编码为UTF-8,而不是ISO-8859-1,并且当页面呈现时,UTF-8被解释为ISO-8859-1字符,因此显示字符串乱码.
有没有办法解决这个问题,而无需将网页转换为UTF-8字符集?
POST请求的Content-Type设置为"application/x-www-form-urlencoded"
提前致谢.
最近我实现了基于如何国际化 Java Web 应用程序的国际化?.
但是现在我在某些页面上遇到了问题。如果是英语,则显示良好,但如果我们选择任何其他语言,则该页面中的所有值都显示为?????????。

我检查了服务器日志中的异常,但找不到任何人。
这是怎么引起的,我该如何解决?
我从JSP页面上的文本输入字段获取输入,该字段可以包含Umlaute.(例如Ä,Ö,Ü,ä,ö,ü,ß).
处理输入对非Umlaute工作正常.但是,只要在输入字段中输入变音符号,就会传递不正确的值.
例如:
在我看来,好像UTF-8十六进制编码(对于"ä"而言是c3 a4)被用于转换.
如何检索正确的值?
以下是当前实现的片段:
JSP页面将输入值"pk"传递给处理逻辑:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
<input type="text" name="<%=pk.toString()%>" value="<%=value%>" size="70"/>
<button type="submit" title="Edit" value='Save' onclick="action.value='doSave';pk.value='<%=pk.toString()%>'"><img src="icons/run.png"/>Save</button>
Run Code Online (Sandbox Code Playgroud)
该值从args中检索并转换为字符串:
UUID pk = UUID.fromString(args.get("pk")); //$NON-NLS-1$
String value = args.get(pk.toString());
Run Code Online (Sandbox Code Playgroud)
注意:保存在数据库中的元音可以在页面上正确显示.
java ×6
jsp ×6
utf-8 ×6
servlets ×4
ajax ×1
diacritics ×1
encoding ×1
forms ×1
html ×1
httprequest ×1
iso-8859-1 ×1
java-ee ×1
javascript ×1
jpa ×1
jsf ×1
jstl ×1
request ×1
string ×1
tomcat ×1
unicode ×1