Ubuntu 8.04LTS 文件夹名称编码问题

Ubuntu 8.04LTS 文件夹名称编码问题

我将从一开始就解释我的问题,我有一个 Ubuntu 服务器 8.04LTS,我使用带有 Tomcat 6.0.18 和 JRE 1.6 的 Java 应用程序。问题是诸如 (é è ç û) 之类的字符的显示被其他奇怪的字符替换。我知道这是字符编码的问题,所以我尝试fr_FR.ISO-8859-1在 bashrc 文件中添加编码,/etc/default/locale然后我添加了LANG="fr_FR.ISO-8859-1"。我成功地从远程控制台 (PuTTY) 显示好字符,但直接在 shell 服务器上键入时仍然会出现同样的问题。

例如,当我有mkdir一个名为“Août”的文件夹时,我会收到“Ao♦t”。

我认为这可能是由于系统分区使用的编码造成的,但我不知道如何验证这一点。

有人知道我该如何解决这个问题吗?

答案1

更新:这也许很明显,但是您必须在系统范围设置(/etc/default/locale)和(如果需要)应用程序的 Java 设置中始终一致地使用 ISO-8859-1 或 UTF-8。

您需要将系统范围的区域设置更改为使用 ISO-8859-1 - 但是,如果应用程序支持 UTF-8,只需让它使用它(通过在-Dfile.encoding=utf8JVM 上)就会更清楚,因为 Ubuntu 现在默认在 UTF-8 中运行。

检查应用程序的文档以了解如何设置区域设置和编码(例如 ISO-8859-1)- 如果没有涵盖,请设置JAVA_TOOL_OPTIONS 环境变量可能会有用 – 这可能在应用程序的启动脚本中。

要将 Ubuntu 设置为使用 ISO-8859-1:

  • 如果不存在所需的 Linux 区域设置,则生成它,并通过以下方式更新 /etc/default/locale更新区域设置
sudo locale-gen fr_FR
sudo update-locale LANG=fr_FR.ISO-8859-1
  • 更新:进行类似的编辑/etc/环境
    • 不确定为什么 Ubuntu 需要这个,但它在我的 8.04 系统上,它是全新安装而不是升级
  • 关闭所有应用程序和 shell 会话,然后重新启动它们。

与 Windows 和 Mac 不同,Linux 上的文件系统没有字符编码的概念,因此应用程序可以随意生成具有 ISO-8859-1 或 UTF-8 路径名的文件,甚至将它们混合在同一个目录中。这就是为什么你可以将目录创建为“Août”,并让它在另一个 shell 中显示错误。

使用env | egrep "^(LC|LANG)"可以检查区域变量设置 - 听起来您的本地 shell(xterm、GNOME Terminal 等)的设置是错误的。一旦您获得正确的设置,请将它们放入~/.bashrcshell 的文件中。

如果你创建的文件夹路径名编码错误,请查看康维- 它在 Ubuntu 存储库中。

有关设置区域设置和字符编码的一些常规信息Gentoo UTF-8 指南- 虽然这不是适用于 Ubuntu 的,所以一些命令有所不同,但locale命令是相同的,并且想法解释得相当好。

答案2

尝试以LC_ALL相同的方式定义。

此外,如果您在本地查看时使用 xterm,请尝试使用参数启动它-U

但是,如果您在 Tomcat 上遇到问题,则可能应该将-Dfile.encoding=utf8或设置-Dfile.encoding=iso8859-1为 JVM 参数。也许您还需要-Duser.region=fr

相关内容