icCube 报告:无法保存带重音的报告

icCube Reporting : Cannot save Report with accent

保存重音为“Dépenses”的报告时,生成的文件名有些奇怪?字符,然后报告不能是 opened/deleted。既不是来自报告也不是来自 Docs 应用程序。

报表名称最终映射到文件名。在处理文件名时,旧 JAVA IO API 似乎存在错误。

似乎这个问题是在 JAVA 属性 sun.jun.encoding 有一个奇怪的值时发生的(这可以在服务器 UI 界面中检查):例如类似于:ANSI_X3.4-168。 icCube 期待 UTF-8

在 Linux 机器上,您可以按如下方式检查区域设置。在用户启动 icCube 的 shell 中:

# locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_GB.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_GB.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_GB.UTF-8
LC_NAME=en_GB.UTF-8
LC_ADDRESS=
LC_TELEPHONE=en_GB.UTF-8
LC_MEASUREMENT=en_GB.UTF-8
LC_IDENTIFICATION=en_GB.UTF-8
LC_ALL=

然后输入以下内容以检查可用的语言环境:

# locale -a
C
C.UTF-8
en_US.utf8
POSIX

如您所见,第一个命令中提到的 en_GB 区域设置丢失了,这似乎混淆了 JVM。所以可以通过注释掉文件中对应的locale来生成缺失的locale:

/etc/locale.gen

然后重新生成语言环境:

# locale-gen

那你可以查看:

# locale -a
C
C.UTF-8
en_GB.utf8
en_US.utf8
POSIX

现在当重新启动 icCube 时,sun.jnu.encoding 应该是 UTF-8 并且您应该能够得到带有重音符号的报告。