在Linux机器上遇到编码问题,而不是Windows

时间:2010-03-22 20:42:42

标签: java linux content-encoding

我遇到了一个编码问题,这个问题困扰了我几个星期,似乎什么都没有用。我有一个在我的本地机器上工作正常的网站,但是当我将jsp文件推送到Linux盒子进行审查时,之前呈现的字符现在显示为时髦的字符。

出于某种原因,某些字符显示得很好,但其他字符无法正常编码。页面上的所有文本都是从java .properties文件中读取的,并使用bean输出到页面。

我在页面中添加了一个元标记来设置编码,但没有做任何事情。我还添加了<%@ page contentType =“text / html; charset = UTF-8”pageEncoding =“UTF-8”%>但这在linux盒子上什么也没做,实际上我的本地windows机器上出现了编码错误。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

检查加载属性的方法是否使用实际写入属性文件的字符编码。

如果没有明确设置,则使用文件系统的默认编码,Windows上为ISO-Latin-1,某些Linux发行版为UTF-8。

答案 1 :(得分:1)

以下需要一起使用才能使字符编码在Nixes和Nuxes中正常工作:

  • 文件系统编码
  • 数据库编码(似乎不适用)
  • 数据库连接器编码
  • Java内部字符串编码(UTF-16,如果我没记错的话)
  • Java输出编码
  • HTML页面编码

使用您的页面指令,您只能解决最后一个项目符号。换句话说,您正在指示浏览器将页面解码为UTF-8,但这不是您要发送的内容。

请特别查看this (admittedly a few years old) paper,第11章。

答案 2 :(得分:0)

另外,检查两台计算机上的物理文件。我见过几个FTP客户端在传输过程中丢失了文件。快速检查是将您的文件推送为html而不是jsp。你将获得所有<% %>序列的垃圾,但其他文本应该保持不变。您还将应用程序服务器排除在外。如果文本仍然很时髦,那就是你的FTP或WebDAV客户端试图“帮助”。

答案 3 :(得分:0)

查看服务器发送的http标头。这是浏览器在其他任何事情之前寻找编码的第一个地方。