0

工作环境是jboss+mssql

我正在做一个查询并将格式化的结果输出到一个文本文件。查询结果有一些法语重音字符。

在我的本地机器上,一切正常,但在 UAT 服务器(linux box,UTF-8)上,法语重音字符变成了问号。

有谁知道如何解决它?

4

1 回答 1

0

这取决于您如何创建文件 - 代码示例会有所帮助。

如果您确实明确指定了编码,例如在创建 时Writer,如果它与您查看文件的机器的语言环境不匹配,您可能会看到问号、占位符框等,而不是重音字母。您可以使用该locale命令检查您的语言环境,这将使学习相关的字符编码成为可能。这只是查看文件的问题。您说该框是 UTF-8,但请确保该应用程序也在 UTF-8 语言环境下运行 - 您的用户控制台和服务器应用程序可能使用不同的语言环境。

如果您在编写时没有指定字符编码,大多数情况下您最终会使用系统的语言环境。在这种情况下,可能会发生此语言环境不支持您需要的字符,因此将它们替换为占位符。一种解决方案是更改应用程序运行的语言环境,例如通过导出相应的LC_*环境变量。

所以,简短的清单是这样的:

  • 你怎么写你的文件?是否明确指定了编码?
  • 应用程序运行的语言环境是什么(locale命令输出)?
  • 使用od -t x1命令或使用十六进制查看器(如mc. 问号是实际的问号(十六进制代码 3F),还是其他字符?如果它们占用一个字节,则它们可能采用 Latin-N (ISO 8859-N) 编码之一。如果它们占用超过一个字节,则可能是 UTF-8(我知道字母 az 看起来很正常,所以它不是 UTF-16)。
于 2013-06-05T19:04:39.887 回答