相关疑难解决方法(0)

HttpServletRequest UTF-8编码

我看到很多像我一样的问题,但没有一个答案有效...这就是事情:我想从请求中获取我的参数(带重音的字符),但它不起作用.我试过用户,request.setCharacterEncoding( "UTF-8" )但它也没用.

我知道URLDecoder.decode( request.getQueryString(), "UTF-8" )返回权限字符但request.getParameterValues()不起作用!有没有人有想法?

谢谢

java encoding utf-8 httprequest

36
推荐指数
3
解决办法
6万
查看次数

JSP页面中的UTF-8编码

我有一个JSP页面编码的页面ISO-8859-1.这个JSP页面有一个问题答案博客.我希望在Q/A发布期间包含特殊字符.

问题是JSP不支持UTF-8编码,即使我已将其更改ISO-8859-1UTF-8.这些字符(~,%,&,+)正在问题.当我单独或使用任何字符的组合发布这些字符时,它null在数据库中是storinh ,当我在发布应用程序时删除这些字符时它工作正常.

任何人都能提出一些解决方案吗

java jsp utf-8

32
推荐指数
9
解决办法
14万
查看次数

将请求参数作为UTF-8编码的字符串传递

我正在创建一个简单的登录页面,我想将登录和密码参数作为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)

jsp servlets utf-8 character-encoding

27
推荐指数
2
解决办法
8万
查看次数

为什么POST不尊重charset,但是AJAX请求呢?tomcat 6

我有一个基于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声明或其他任何内容.我已经花了三天的时间来完成这项工作,但我的想法已经不多了.谁能帮我?

java ajax tomcat servlets character-encoding

24
推荐指数
1
解决办法
1万
查看次数

HTML:表单不发送UTF-8格式输入

我已经访问了HTML中关于UTF-8编码的每一个问题,似乎没有任何东西像预期的那样工作.

我添加了meta标签:没有改变.
我添加了accept-charset属性form:没有改变.


JSP文件

<%@ 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)

html java forms jsp utf-8

9
推荐指数
2
解决办法
2万
查看次数

在java中使用request.getParameter()时为什么字符被破坏?

我在JSP页面中有这样一个链接,编码为big5 http:// hello/world?name =婀ㄉ 当我在浏览器的URL栏中输入它时,它将被改为 http:// hello/world?name = %23%24%23 当我们想在jsp页面中获取此参数时,所有字符都已损坏.

我们设置了这个:request.setCharacterEncoding("UTF-8"),因此所有请求都将转换为UTF8.

但为什么在这种情况下,它不起作用?提前致谢!.

java request character-encoding

8
推荐指数
3
解决办法
2万
查看次数

写入数据库时​​写入错误的UTF-8(读取正常)

在使用JSFEclipseLink JPAMySQL数据库的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,但我完全不知道如何解决这个问题:(

java jsf jpa character-encoding java-ee

6
推荐指数
1
解决办法
4998
查看次数

如何在Servlet中启用读取非ascii字符

如何使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页面

"???" …

unicode jsp servlets character-encoding

3
推荐指数
1
解决办法
4970
查看次数

encodeURIComponent使用ISO-8859-1编码为javascript字符串

我一直在尝试这项工作但到目前为止还没有运气.我不清楚最新情况,但我会尽力解释.我的服务器端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"

提前致谢.

javascript utf-8 iso-8859-1 character-encoding

3
推荐指数
1
解决办法
1万
查看次数

servlet 应用程序中的 Unicode 字符显示为问号

最近我实现了基于如何国际化 Java Web 应用程序的国际化?.

但是现在我在某些页面上遇到了问题。如果是英语,则显示良好,但如果我们选择任何其他语言,则该页面中的所有值都显示为?????????

图片

我检查了服务器日志中的异常,但找不到任何人。

这是怎么引起的,我该如何解决?

jsp servlets jstl internationalization character-encoding

2
推荐指数
1
解决办法
2580
查看次数

如何从JSP页面正确解释Umlaute的参数

我从JSP页面上的文本输入字段获取输入,该字段可以包含Umlaute.(例如Ä,Ö,Ü,ä,ö,ü,ß).

处理输入对非Umlaute工作正常.但是,只要在输入字段中输入变音符号,就会传递不正确的值.

例如:

  • 如果在输入字段中输入"ä"(UTF-8:U + 00E4),
  • 从参数中提取的字符串是"ä"(UTF-8:U + 00C3和U + 00A4)

在我看来,好像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)

注意:保存在数据库中的元音可以在页面上正确显示.

string jsp utf-8 diacritics character-encoding

2
推荐指数
1
解决办法
2680
查看次数