当前位置: 首页 > 面试题库 >

Java Spring MVC UTF-8编码

魏明亮
2023-03-14
问题内容

目前,我正在尝试开始使用Spring MVC。在尝试时,我遇到了编码问题。

我想在我的JSP页面上显示UTF-8字符,所以我在ModelAndView中添加了一个带有UTF-8字符的字符串。看起来像这样:

@Controller
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

    @RequestMapping(value="/", method=RequestMethod.GET)
    public ModelAndView home() {
        logger.info("Welcome home!");
        return new ModelAndView("home", "utftest", "ölm");
    }

}

在JSP页面上,我只想显示具有UTF-8字符的字符串,如下所示:

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Home</title>
</head>
<body>
    <h1>Hello world!</h1>
    <p><c:out value="ö" /></p>
    <p><c:out value="${utftest}"></c:out></p>
</body>
</html>

结果,我得到以下结果:

Hello world!

ö

ölm

请注意,下面的代码<c:out value="ö" />显示没有编码错误。我还在Springsource Tool Suite中将默认编码设置为UTF-8,但仍然遇到错误的字符。

编辑:

也许我应该提到我正在使用OS X 10.6的Mac。对于Spring开发,我使用Spring的Springsource工具套件(http://www.springsource.com/developer/sts)。希望这有助于找出我的设置出了什么问题。

编辑2:

多亏了McDwell,我才尝试在控制器中使用”\u00f6lm”而不是使用,”ölm”并且JSP页面上的编码问题也消失了。

这是否意味着我的.java文件使用错误的字符集编码?我在哪里可以在Eclipse中更改此设置?

谢谢。


问题答案:

好的,我发现了编码问题的原因。

问题出在我的构建过程中。我没有告诉pom.xml文件中的Maven 使用UTF-8编码来构建项目。因此,Maven刚从我的系统MacRoman中获取了默认编码,并使用MacRoman编码进行了构建。

幸运的是,Maven在构建项目时就向你发出警告(但是,由于所有其他消息,该警告很有可能很快从屏幕上消失)。

这是你需要在pom.xml文件中设置的属性:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    ...
</properties>

谢谢大家的帮助。没有你们,我将无法解决这个问题!



 类似资料:
  • 编译 脚本模式 命名函数 函数捕捉 默认参数 Elixir中我们把许多函数组织成一个模块。我们在前几章已经提到了许多模块, 如String模块: iex> String.length "hello" 5 创建自己的模块,用defmodule宏。用def宏在其中定义函数: iex> defmodule Math do ...> def sum(a, b) do ...> a + b ..

  • 问题内容: 我想从请求中获取参数(带有重音符的字符),但是它不起作用。我尝试使用,但也没有用。 我知道返回正确的字符,但不起作用! 有人有主意吗? 问题答案: Paul的建议似乎是最好的做法,但如果要解决此问题,则根本不需要URLEncoder或URLDecoder: 更新: 由于获得了很多选票,我想强调BalusC的观点,即这绝对不是解决方案。充其量是一种解决方法。人们不应该这样做。 我不知道是

  • 问题内容: 我正在用python做一些脚本。我创建一个保存在文件中的字符串。这个字符串有很多数据,来自目录的树状结构和文件名。根据convmv的介绍,我所有的树状结构都是UTF-8。 我想将所有内容都保留在UTF-8中,因为之后我将其保存在MySQL中。现在,在UTF-8的MySQL中,我遇到了一些字符问题(例如é或è-我是法语)。 我希望python始终将字符串用作UTF-8。我在互联网上阅读了

  • 问题内容: 使用UTF-8编码创建字符串时存在不一致的地方。 运行此代码: 在Java 1.8.0_20(及更早版本)上,我们得到结果 在Java 1.7和1.6上,我们得到正确的结果: 您遇到此错误了吗?有没有解决方法? 对于Shift_JIS,JIS_X0212-1990,x-IBM300,x-IBM834,x-IBM942,x-IBM942C,x-JIS0208来说,这种不一致也很明显,但显

  • 问题内容: 我想编码一个可能是图像或任何pdf的文件并将其发送到服务器。我必须遵循哪种类型的编码和解码。(服务器和客户端都在我们公司内。我们可以在两个地方都写逻辑)。Java默认情况下支持 UTF-8编码 。并使用 Base-64 编码,我必须导入外部jar。对于简单的文本,两种方法都可以正常工作。我正在使用tcp套接字编程。 使用UTF-8编码 使用Base-64(使用Apache的common

  • 本章是由 Alex Cabal 最初撰写在 PHP Best Practices 中的,我们使用它作为进行建议的基础。 这不是在开玩笑。请小心、仔细并且前后一致地处理它。 目前,PHP 仍未在底层实现对 Unicode 的支持。虽然有很多途径可以确保 UTF-8 字符串能够被正确地处理,但这并不是很简单的事情,通常需要对 Web 应用进行全方面的检查,从 HTML 到 SQL 再到 PHP。我们将