【发布时间】:2019-04-15 14:51:59
【问题描述】:
我有一个 Spring Boot Web 应用程序,它曾经在 java 8 和 Spring boot 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"%>
这需要改变吗?
谢谢
【问题讨论】:
-
该字符是字符串的一部分还是属性文件的一部分?只是根据might be because of the UTF-8 default encoding now.的受限信息进行推测
-
问题在于用户输入的实际数据,这些数据使用 Hibernate 作为实体保存到 MSSQL 数据库中。
-
您的应用程序如何读取它?作为字符串?
-
请查看我的编辑以获取说明和代码
标签: java spring-boot character-encoding non-ascii-characters java-11