tomcat 服务器语言编码问题 (UTF-8)

tomcat server language encoding problem (UTF-8)

提问人:beingicy 提问时间:3/4/2023 最后编辑:skomisabeingicy 更新时间:3/5/2023 访问量:332

问:

我正在使用 Intellij Ultimate。当我在浏览器中运行html文件时,它适用于编码。但是,当我以 localhost url(tomcat 服务器)身份运行时,字符会破裂。编码破解的图像这是我的IF.html文件

<!DOCTYPE html>
<html lang="en">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
    <meta charset="utf-8">
    <title>title</title>
</head>
<h1>If-else Example</h1>
<form method="post" action="if.jsp">
    <body>
    이름 : <label>
        <input name="name">
    </label>
    <p></p>
    좋아하는 색깔 : <label>
        <select name="color">
            <option value="blue" selected>파랑</option>
            <option value="red">빨강</option>
            <option value="orange">오렌지</option>
            <option value="etc">기타</option>
        </select>
    </label>
    <p></p>
    <input type="submit" value="보내기">
    </body>
</form>
</html>

文件的正确特征

我通过 web.xml 映射了这个 if.html 文件。

    <servlet>
        <servlet-name>if</servlet-name>
        <jsp-file>/if.html</jsp-file>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>if</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

其他 Jsp 文件或映射的 java 文件以 UTF-8 编码良好,但只有 html 文件破解。我想将html文件正确编码为UTF-8。提前感谢您的帮助。

我尝试过这种方式,但没有用。

  1. 将 Intellij 项目编码、全局编码、属性文件的默认编码设置为 UTF-8
  2. 在 Tomcat Configuration 中添加了 java 选项 -Dfile.encoding=UTF-8
  3. 添加了 Intellij 自定义 VM 选项 -Dfile.encoding=UTF-8
  4. 在 tomcat 容器的 server.xml 中添加了 URLEncoding=“UTF-8”
HTML Tomcat IntelliJ-Idea 编码 UTF-8

评论

0赞 g00se 3/4/2023
顺便说一句,那是什么语言?
0赞 beingicy 3/4/2023
@g00se 这是 Java Maven 项目。
0赞 beingicy 3/4/2023
@g00se 哦,对不起,是韩国人。我在通过 utf-8 编码韩语时遇到了问题。
0赞 JosefZ 3/4/2023
你面临一个 mojibake 案例(在 Python 中的例子,因为它的普遍可理解性):返回 .覆盖线 ) ...'보내기'.encode('utf-8').decode('cp1252')보내기<input type="submit" value="보내기">
1赞 Mark Tolonen 3/5/2023
如果以 UTF-8 编码保存,您的文件(如图所示)会在 Chrome 中正确打开。尽管进行了设置,但文件本身并未以 UTF-8 编码。

答:

0赞 meedhansh gupta 3/4/2023 #1

由于您遇到 UTF-8 问题,您可以尝试 UTF-8 + BOM 编码,因为它在任何情况下都对我有用,因为我的 tomcat 服务器曾经在输入阿拉伯语时显示一个巨大的错误。因此,现在您应该能够在两台服务器上运行它们。这应该可以解决问题。

评论

0赞 meedhansh gupta 3/5/2023
@JosefZ 嗨,但我认为每当我遇到此类问题时,我总是使用 UTF8+BOM,因为它通常可以解决我的问题,而不是 ANSI 或 Unicode。这就是我说的原因。
0赞 skomisa 3/5/2023
如果在问题的评论中作为建议发布,您的答案会很好,但仅仅因为包含 BOM 可以解决您的问题,并不意味着它会解决 OP 的问题。事实上,它可能会引起问题。为了支持 @JosefZ: 的评论:来自 JetBrains 文档:“默认情况下,IntelliJ IDEA 在没有 BOM 的情况下创建 UTF-8 文件,因为某些软件与 BOM 不兼容,并且在解释脚本时可能会出现问题。
0赞 beingicy 3/5/2023
谢谢大家。我只是做新项目,它就可以了。我认为我的项目中存在一些形式问题。我第一次创建一个新项目时,我是用 javax 制作的。但是,由于我使用的是 tomcat 11,因此我将一些设置更改为 jakarta。我想知道那里,有问题。顺便说一句,如果有其他编码问题,我会尝试 unicode 和字节顺序标记的方式。非常感谢您的帮助。
0赞 meedhansh gupta 3/12/2023
不客气!