Spring boot 2.1 / java 11 从 Spring boot 2.0.5 / java 8 迁移后,应用无法识别重音字符
Spring boot 2.1 / java 11 app not recognizing accentuated characters after migrating from Spring boot 2.0.5 / java 8
我有一个 Spring 引导网络应用程序,它曾经在 java 8 和 Spring 引导 2.0.5 上运行得很好。现在,当我访问任何页面并尝试输入具有 É 字符的数据时,该字符将保存为?在数据库中,显然是这样检索的。除了添加不再内置于 JRE 中的 javax.json.bind-api 依赖项之外,我还更改了 0 个代码。是否需要更改某种全局字符编码 属性 才能正确识别非标准字符?
编辑
这是我的 JSP 页面的相关部分:
<form:form method="POST" modelAttribute="medClass" class="form-style-7">
<form:input path="name" id="name"/>
</form:form>
控制器代码:
@RequestMapping(value = {"/newMedClass"}, method = RequestMethod.POST)
public String saveMedClass(@Valid MedClass medClass, BindingResult result, ModelMap model)
{
boolean hasCustomErrors = validate(result, medClass);
if ((hasCustomErrors) || (result.hasErrors()))
{
setPermissions(model);
return "medClassDataAccess";
}
medClassService.save(medClass);
session.setAttribute("successMessage", "Successfully added med class \"" + medClass.getName() + "\"!");
return "redirect:/medClasses/list";
}
当输入 ÉÉÉÉ 作为该实体的名称(是的,它是一个字符串)时,实体进入控制器时带有 ?????已经并因此被保存。
编辑
我在每个 JSP 的顶部都有这一行:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
这个需要改吗?
谢谢
将 JSP 的字符集更改为 UTF-8 修复了它。这在以前是如何完美运作的完全是个谜...
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
我有一个 Spring 引导网络应用程序,它曾经在 java 8 和 Spring 引导 2.0.5 上运行得很好。现在,当我访问任何页面并尝试输入具有 É 字符的数据时,该字符将保存为?在数据库中,显然是这样检索的。除了添加不再内置于 JRE 中的 javax.json.bind-api 依赖项之外,我还更改了 0 个代码。是否需要更改某种全局字符编码 属性 才能正确识别非标准字符?
编辑
这是我的 JSP 页面的相关部分:
<form:form method="POST" modelAttribute="medClass" class="form-style-7">
<form:input path="name" id="name"/>
</form:form>
控制器代码:
@RequestMapping(value = {"/newMedClass"}, method = RequestMethod.POST)
public String saveMedClass(@Valid MedClass medClass, BindingResult result, ModelMap model)
{
boolean hasCustomErrors = validate(result, medClass);
if ((hasCustomErrors) || (result.hasErrors()))
{
setPermissions(model);
return "medClassDataAccess";
}
medClassService.save(medClass);
session.setAttribute("successMessage", "Successfully added med class \"" + medClass.getName() + "\"!");
return "redirect:/medClasses/list";
}
当输入 ÉÉÉÉ 作为该实体的名称(是的,它是一个字符串)时,实体进入控制器时带有 ?????已经并因此被保存。
编辑
我在每个 JSP 的顶部都有这一行:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
这个需要改吗?
谢谢
将 JSP 的字符集更改为 UTF-8 修复了它。这在以前是如何完美运作的完全是个谜...
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">