java - Apache HTTP下Java环境上传文件后字符集发生变化

标签 java apache http character-encoding httpd.conf

我有一个在独立 WildFly 中运行的项目,该项目在 Eclipse 下本地工作正常,但在 Apache HTTP 下的远程服务器中的 WildFly 上运行的同一项目在提交文件后特殊字符被损坏。例如:

提交文件之前:

Before submit a file

提交文件后:

After submit a file

<小时/>

操作系统:Linux

使用:JSF 2.2、Java 8、WildFly 10 和 Apache HTTP 2.4

所有 XHTML 文件均使用 UTF-8 编码,头部包含元标记:

<meta http-equiv="restrict-type" content="text/html; charset=UTF-8" />
<小时/>

我已经尝试过:

→ enctype 属性中包含“charset”参数的表单:

<h:form id="fileForm" enctype="multipart/form-data;charset=UTF-8">

→ 使用参数运行 WildFly:

-Dfile.encoding=UTF-8

→ 在 httpd.conf 中启用以下选项:

AddDefaultCharset UTF-8

我不知道我错过了什么...有人知道这个问题的解决方案吗?我将不胜感激任何帮助。预先感谢您,并对英语不好表示抱歉。

最佳答案

操作系统运行时使用什么字符集?您从 echo $LANGecho $LC_CTYPEecho $LC_ALL 得到什么?可能是在某个地方使用了操作系统的默认字符集。

我曾经在 Google Container Engine 上的 Kubernetes pod 中运行 Wildfly 应用程序时遇到过类似的问题。根本没有设置编码,因此我必须在启动应用程序服务器之前设置以下环境变量:

ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8

因此,在启动 WildFly 之前,请检查操作系统中的设置并根据需要设置环境变量。

编辑:根据评论,这似乎是 Apache 作为代理运行的问题。我不是这方面的专家,但也许this answer from superuser可以进一步帮助您。

关于java - Apache HTTP下Java环境上传文件后字符集发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43110161/

相关文章:

java - 在 Java 中使用 Apache.poi 通过过滤器获取 Excel 记录

java - 合并两个二叉树

php - IIS 6 重定向目录到 index.php?

java - 登录 JDK11 HttpClient

api - 如何使用资源管理器 API 列出 GCP 组织内的所有项目?

node.js - 为什么要发送 API 状态码?

java - Hadoop map reduce 总是写入相同的值

java - 模拟 Autowiring 的 bean 会抛出 NullPointerException

java - Websockets 无法在 Google Compute Engine 上部署的 Tomcat 服务器上运行

php - 无法通过 Web 浏览器在 Windows 上将 mysqli 与 PHP 结合使用,但可以通过命令行运行