当前位置: 首页 > 知识库问答 >
问题:

Ubuntu/Tomcat服务器UTF-8编码问题

曹钊
2023-03-14

我使用Java/Jsp开发了一个web应用程序,该应用程序运行在带有Tomcat 8的Ubuntu14.04 LTS服务器上,下面的UTF-8编码问题与部分符号§apperas有关。

在服务器端输入的任何章节符号§都将转换为§,我不知道为什么。

简单系统输出:

Should Print [§] - [output]: §
Char: § ASCII 167

HTML/客户端是正常的,因为wireshark跟踪向我显示了正确的字符被传送到服务器。所以问题一定出在tomcat服务器本身。

以下内容已经设置好:

  1. 设置JSP编码,HTML5编码

&lt%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    &ltmeta charset="utf-8" />

protected void doPost(HttpServletRequest request, HttpServletResponse 
response)
    throws ServletException, IOException {
    // Set CharSet to UTF-8
    response.setContentType("text/html; charset=UTF-8");
    response.setCharacterEncoding("UTF-8");
    request.setCharacterEncoding("UTF-8");
    locale -a 
        C
        C.UTF-8
        en_US.utf8
        POSIX

env JAVA_OPTS="-Djava.awt.headless=true -
    Djava.security.egd=file:/dev/./urandom -
Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"
    env CATALINA_OPTS="-Xms512M -Xmx1024M -server -XX:+UseParallelGC -
Dfile.encoding=UTF-8"

服务器GET的xml-In连接器标记(与我无关)添加了“URIEncoding”属性作为



    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>

和未注释web.xml内的UTF-8过滤器



    &ltfilter>
        &ltfilter-name>setCharacterEncodingFilter</filter-name>
        &ltfilter-
    class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
        &ltinit-param>
            encoding</param-name>
            UTF-8</param-value>
        </init-param>
        &ltasync-supported>true</async-supported>
    </filter>

现在我没有主意了,希望得到一些有用的提示:)

谢谢

编辑:似乎任何UTF-8代码

U+00A1  ¡   c2 a1   INVERTED EXCLAMATION MARK
U+00A2  ¢   c2 a2   CENT SIGN
U+00A3  £   c2 a3   POUND SIGN
U+00A4  ¤   c2 a4   CURRENCY SIGN
...

Sysout: ¡ ¢ ã ä...

编辑:

我尝试了我找到的任何东西,但它仍然不起作用:System.properties()返回以下内容。也许有人有另一种想法。


     logger.debug("SETTINGS: " + System.getProperties() );
     ...
     file.encoding.pkg=sun.io
     javax.servlet.request.encoding=UTF-8
     sun.jnu.encoding=ANSI_X3.4-1968
     file.encoding=UTF-8
     sun.io.unicode.encoding=UnicodeLittle
     ....

共有1个答案

蔚桐
2023-03-14

在jsp的顶部:

<%@page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
%><!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">

(恐怕情况已经如此。)在浏览器中检查页面编码和HTML源文本。

 类似资料:
  • 我想知道是否有人能帮忙,我很难将UTF-8字符发布到SagePay。数据库是MySQL,带有数据库字符集utf8和数据库排序规则utf8_general_ci。数据库连接字符串使用useUnicode=true 所有发布到数据库的数据都存储为UTF-8,所有查询的数据都显示为UTF-8,但当字符串编码如下时: 然后发到SagePay,他们会收到一个来自国际字符所在位置的乱码字符串。如果字符串中不包

  • 我在将文本从UTF-8编码转换为UTF-8编码时遇到问题。这里有字节数组, 我正在将其转换为UTF-8字符串并返回字节数组, 据我所知,这是一个3字节的数组。正当但这是我得到的。 这是什么原因?据我所知,在UTF-8 Specials中,2391189组合被称为替换字符。 这也是一个更大问题的一部分。

  • 问题内容: 使用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来说,这种不一致也很明显,但显

  • 问题内容: 我使用Jersey 1.11做了一个小型Rest Web服务。当我调用返回Json的url时,非英文字符的字符编码存在问题。Xml的相应网址(“ test.xml”在开始的xml-tag中使其成为utf-8。 如何使网址“ test.json”返回utf-8编码的响应? 这是该服务的代码: 这是服务使用的pojo: 问题答案: Jersey在默认情况下应始终生成utf-8,听起来像是您

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

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