工作环境是jboss + mssql
我正在进行查询并将格式化结果输出到文本文件。查询结果有一些法语重音字符。
在我的本地机器上,一切正常,但在UAT服务器(linux box,UTF-8)上,法语口音字符成为问号。
有谁知道如何解决它?
答案 0 :(得分:0)
这取决于您创建文件的方式 - 代码示例会有所帮助。
如果您明确指定了编码,例如在创建Writer
时,如果它与您查看文件的机器的区域设置不匹配,您可能会看到问号,占位符框等,而不是重音字母。您可以使用locale
命令检查您的语言环境,这样就可以了解相关的字符编码。这只是查看文件的问题。您说该框是UTF-8,但确保该应用程序也在UTF-8语言环境下运行 - 您的用户控制台和服务器应用程序可能使用不同的语言环境。
如果在编写时没有指定字符编码,通常最终会使用系统的语言环境。在这种情况下,可能会发生此区域设置不支持您需要的字符,因此它们将替换为占位符。解决方案是更改运行应用的区域设置,例如通过导出相应的LC_*
环境变量。
所以,简短的清单是这样的:
locale
命令的输出)?od -t x1
命令或使用mc
中包含的十六进制查看器,检查写入文件的实际字节数。问号是实际问号(十六进制代码3F),还是其他一些字符?如果它们占用一个字节,则它们可能处于Latin-N(ISO 8859-N)编码之一。如果它们占用多个字节,则可能是UTF-8(我理解字母a-z看起来很正常,所以它不是UTF-16)。