Linux 不解释 UTF8 编码的字符

Linux 不解释 UTF8 编码的字符

Adán-y-Eva-50x50.jpg因此,当我尝试访问以下文件时,apache 会将其转换为Ad\xc3\xa1n-y-Eva-50x50.jpg并且找不到它,即使它存在。

这种情况仅发生在包含 UTF8 字符的文件名中。

我的/etc/httpd/conf/httpd.conf

...
AddDefaultCharset UTF-8
...
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable +Charset=UTF-8
...

并将其添加到我的根目录.htaccess的第一行:

IndexOptions +Charset=UTF-8

所有这些都无法加载此类文件。有什么建议吗?

更新

顺便提一下:我在 CentOS 服务器上运行网站,并预先配置了 plesk 面板

答案1

这里的问题似乎不是出在您的浏览器或 Apache 配置上。您需要仔细检查系统的语言环境设置。

您需要检查 apache 正在运行的语言环境是否启用了 UTF-8。为此,您可以运行以下命令:

$ sudo su -l -c locale www-data

apache 用户在哪里www-data。检查返回的区域设置是否看起来不像,例如,es_ES.UTF-8这意味着您的区域设置未启用 UTF-8。

如果是这种情况,您可以在 CentOS 计算机上更改此配置,将/etc/sysconfig/i18n行更改LANG="es_ES"LANG="es_ES.UTF-8"。但是,为了使其正常工作,您的系统仍然需要此语言的语言环境文件。要检查它是否存在,请使用locale -a获取可用语言环境列表。

如果您的系统没有启用 UTF-8 的区域设置,您可以使用以下命令生成一个:

$ sudo localedef -i es_ES -f UTF-8 es_ES.utf8 

并将其设置为您的默认语言。

希望这有帮助!

答案2

除了 fboaventura 的回答

检查语言环境 apache 是否正在运行

$ sudo su -l -c locale www-data

为了更改i18n配置/etc/sysconfig/i18n

进入CentOS系统配置目录

$ cd /etc/sysconfig

备份您的语言设置文件

$ cp i18n i18n.backup

使用 nano 编辑语言设置文件

$ nano i18n

编辑文件以包含您的配置

例如:

LANG="en_US.utf8"
SYSFONT="latarcyrheb-sun16"
SUPPORTED="en_US.utf8:en_US:en:fr_FR.utf8:fr_FR:fr :es_ES.utf8:es_ES:es:de_DE.utf8:de_DE:de:sv_SE.utf 8:sv_SE:sv:zh_CN.utf8:
zh_CN:zh:zh_TW.utf8:zh_TW:zh:ja_JP.utf8:ja_JP:ja:k o_KR.utf8:ko_KR:ko"

保存文件并重新启动系统。

其他资源

相关内容