【问题标题】:AddCharset UTF-8 doesn't seem to have any effect for .javaAddCharset UTF-8 似乎对 .java 没有任何影响
【发布时间】:2021-11-01 03:28:13
【问题描述】:

我在网站https://klipspringer.avadeaux.net/的根目录下的.htaccess中有以下内容:

AddDefaultCharset UTF-8
AddCharset UTF-8 .js
AddCharset UTF-8 .html
AddCharset UTF-8 .java
AddCharset UTF-8 .c
AddCharset UTF-8 .css

这适用于大多数可以在浏览器中查看的代码文件。例如,在 Chrome 中查看sendcmd.js 时,“2014–2021”中的“-”字符正确显示:

但 UTF-8 指令似乎不适用于 .java 文件。例如,在TrackChain.java 中,Chrome 将“-”字符的 UTF-8 字节显示为三个字符:

任何想法为什么,或者可以做些什么?

Safari 和 Chrome 有同样的问题(而 Firefox 根本不想显示 Java 文件,而是提示我输入下载目的地)。

(额外问题:有没有办法为不包含“.”的文件设置字符集,比如 Makefile?)

【问题讨论】:

标签: .htaccess utf-8


【解决方案1】:

根据the documentation AddDefaultCharset 影响所有MIME 类型为text/plaintext/html 的文件(在htaccess UTF-8 encoding for .html, .css, .js - Whats the best way? 的评论中也指出了这一点)。所以你对.html 的定义是多余的(除非它们实际上是 XHTML 并且是这样的)。

AddCharset is part of mod_mime,所以你必须确保这个模块可用。根据文档,您可以用一行定义多个扩展,而不是每个使用一行。

  • 但是,请求您的 JAVA 示例只会带回此标头,而没有任何文本编码提示 - 不出所料,客户端要么猜对了,要么猜错了:

    内容类型:文本/x-java-source

    因此,您只假设所提供的服务,有效地跳过了您仍然可能成为问题一部分的可能性,而是指责客户的行为。

  • 请求您的 JS 示例会按预期返回一个标头:

    内容类型:应用程序/javascript; charset=UTF-8

所以你必须找出为什么没有任何charset 定义提供JAVA 文件。查看How to change the default encoding to UTF-8 for Apache 中的所有答案以尝试一些解决方法并使用your browser to check if the response headers 实际上包含您想要的内容。

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 2019-02-16
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2012-10-22
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多