- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经访问了有关 HTML 中的 UTF-8 编码的每一个问题,但似乎没有任何问题使其按预期工作。
我添加了 meta
标签:没有任何改变。
我在 form
中添加了 accept-charset
属性:没有任何变化。
<%@ 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="${ saved }">
<div style="position:fixed; top: 90px; right: 10px;">
<c:out value="Travail enregistré dans la base de donnée"/>
</div>
</c:if>
<table border="1">
<c:if test="${ !saved }">
<thead>
<th style="weight:bold">Original Line</th>
<th style="weight:bold">Translation</th>
<th style="weight:bold">Already translated</th>
</thead>
</c:if>
<c:forEach items="${ subtitles }" var="line" varStatus="status">
<tr>
<td style="text-align:right;"><c:out value="${ line }" /></td>
<td><input type="text" name="line${ status.index }" id="line${ status.index }" size="35" /></td>
<td style="text-align:right"><c:out value="${ lines[status.index].content }"/></td>
</tr>
</c:forEach>
</table>
</form>
</body>
</html>
for (int i = 0 ; i < 2; i++){
System.out.println(request.getParameter("line"+i));
}
Et ton père et sa soeur
Il ne sera jamais parti.
最佳答案
I added the
meta
tag : nothing changed.
当页面通过 HTTP 而不是例如来自本地磁盘文件系统(即页面的 URL 是 http://...
而不是例如 file://...
)。在 HTTP 中,将使用 HTTP 响应 header 中的字符集。您已经设置如下:
<%@page pageEncoding="UTF-8"%>
这不仅会使用 UTF-8 写出 HTTP 响应,还会设置 charset
Content-Type
中的属性响应头。
Web 浏览器将使用它来解释响应并对任何 HTML 表单参数进行编码。
I added the
accept-charset
attribute inform
: nothing changed.
它只在 Microsoft Internet Explorer 浏览器中有效。即使这样,它也是错误的。永远不要使用它。所有真正的网络浏览器将改为使用 charset
Content-Type
中指定的属性响应的标题。只要您不指定 accept-charset
,即使 MSIE 也会以正确的方式进行操作属性。如前所述,您已经通过 pageEncoding
正确设置了它。 .
同时去掉 meta
标记和 accept-charset
属性。它们没有任何有用的效果,从长远来看它们只会让你自己感到困惑,甚至在最终用户使用 MSIE 时让事情变得更糟。只要坚持 pageEncoding
.而不是重复 pageEncoding
在所有 JSP 页面上,您还可以在 web.xml
中全局设置它如下:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
如前所述,这将告诉 JSP 引擎使用 UTF-8 编写 HTTP 响应输出,并将其也设置在 HTTP 响应 header 中。在发送回服务器之前,网络浏览器将使用相同的字符集对 HTTP 请求参数进行编码。
您唯一缺少的步骤是告诉服务器它必须使用 UTF-8 在返回 getParameterXxx()
之前解码 HTTP 请求参数。电话。如何全局执行此操作取决于 HTTP 请求方法。鉴于您使用的是 POST 方法,使用以下自动 Hook 所有请求的 servlet 过滤器类可以相对容易地实现这一点:
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
// NOOP.
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
@Override
public void destroy() {
// NOOP.
}
}
就是这样。在 Servlet 3.0+(Tomcat 7 和更新版本)中,您不需要额外的 web.xml
配置。
您只需要记住,setCharacterEncoding()
非常重要方法被调用之前使用任何getParameterXxx()
首次获取POST 请求参数方法。这是因为它们仅在第一次访问时被解析一次,然后缓存在服务器内存中。
例如下面的顺序是错误的:
String foo = request.getParameter("foo"); // Wrong encoding.
// ...
request.setCharacterEncoding("UTF-8"); // Attempt to set it.
String bar = request.getParameter("bar"); // STILL wrong encoding!
做 setCharacterEncoding()
servlet 过滤器中的作业将保证它及时运行(至少在任何 servlet 之前)。
如果你想指示服务器也使用 UTF-8 解码 GET(不是 POST)请求参数(你知道的那些你在 URL 中的 ?
字符之后看到的参数),那么你基本上需要在服务器端配置它。无法通过 servlet API 对其进行配置。例如,如果您使用 Tomcat 作为服务器,则需要添加 URIEncoding="UTF-8"
。 <Connector>
中的属性Tomcat 自己的元素 /conf/server.xml
.
如果您仍然看到 Mojibake在 System.out.println()
的控制台输出中调用,那么 stdout 本身没有配置为使用 UTF-8 的可能性很大。如何做到这一点取决于谁负责解释和呈现标准输出。例如,如果您使用 Eclipse 作为 IDE,则需要将 Window > Preferences > General > Workspace > Text File Encoding 设置为 UTF-8。
关于java - HTML : Form does not send UTF-8 format inputs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51999092/
我有两个文本输入元素 A 和 B。 我希望用户能够从 A 中选择部分或全部文本并拖动到 B,但文本不会从 A 中消失。 假设“A”包含“quick brown fox”,用户突出显示“fox”一词并将
我正在一个网站上工作,如果在提交表单之前数字不在最小值和最大值之间,我希望数字输入能够自行更正。我的代码如下: HTML: JavaScript: function CorrectOverUnder
在检查输入值是否存在并将其分配给变量时,我看到了两种实现此目的的方法: if(Input::has('id')) { $id = Input::get('id'); // do som
我意识到 有一个 border-box盒子模型,而有一个 content-box盒子模型。此行为存在于 IE8 和 FF 中。不幸的是,这使我无法将这种样式应用于大小均匀的输入: input, tex
在 Polymer 文档 ( https://elements.polymer-project.org/elements/iron-input ) 中,我发现: 而在另一个官方文档(https://
我使用 jquery 添加/删除输入 我使用append为日期/收入添加多个Tr 我还使用另一个附加来添加多个 td 以获取同一日期 Tr 中的收入 我添加多个日期输入,并在此表中添加多个收入输入 我
Python3 的 input() 似乎在两次调用 input() 之间采用旧的 std 输入。有没有办法忽略旧输入,只接受新输入(在 input() 被调用之后)? import time a =
在一些教程中,我看到了这些选择器: $(':input'); 或 $('input'); 注意“:”。 有什么不同吗? 最佳答案 $('input') = 仅包含元素名称,仅选择 HTML 元素。 $
我有下一个 html 表单: Nombre: El nombre es obligatorio. Solo se pe
有两种方法可以在组件上定义输入: @Component({ inputs: ['displayEntriesCount'], ... }) export class MyTable i
input: dynamic input is missing dimensions in profile onnx2trt代码报错: import numpy as np import tensor
所以,我有允许两个输入的代码: a, b = input("Enter a command: ").split() if(a == 'hello'): print("Hi") elif(a =
我有一个与用户交流的程序。我正在使用 input() 从用户那里获取数据,但是,我想告诉用户,例如,如果用户输入脏话,我想打印 You are swearing!立即删除它! 而 用户正在输入。 如您
我在运行 J2ME 应用程序时遇到了一些严重的内存问题。 所以我建立了另一个步骤来清除巨大的输入字符串并处理它的数据并清除它。但直到我设置 input = null 而不是 input = "" 才解
我想在我的 android 虚拟设备中同时启用软输入和硬键盘。我知道如何两者兼得,但不会两者。 同时想要BOTH的原因: 软输入:预览当键盘缩小屏幕时布局如何调整大小 硬键盘:显然是快速输入。 提前致
我有一个邮政编码字段,在 keyup 上我执行了一个 ajax 调用。如果没有可用的邮政编码,那么我想添加类“input-invalid”。但问题是,在我单击输入字段的外部 某处之前,红色边框验证不会
根据我的理解使用 @Input() name: string; 并在组件装饰器中使用输入数组,如下所示 @Component({ ... inputs:
我有一段代码是这样的 @Component({ selector: 'control-messages', inputs: ['controlName: control'],
在@component中, @input 和@output 属性代表什么以及它们的用途是什么? 什么是指令,为什么我们必须把指令放在下面的结构中? directives:[CORE_DIRECTIVE
有没有一种方法可以测试变量是否会使SAS中的INPUT转换过程失败?或者,是否可以避免生成的“NOTE:无效参数”消息? data _null_; format test2 date9.; inp
我是一名优秀的程序员,十分优秀!