Character encoding linux中文件的字符编码输出

Character encoding linux中文件的字符编码输出,character-encoding,Character Encoding,工作环境是jboss+mssql 我正在进行查询,并将格式化结果输出到文本文件。查询结果包含一些法语重音字符 在我的本地机器上,一切正常,但在UAT服务器上(LinuxBox,UTF-8),法语重音字符变成了问号 有人知道如何解决这个问题吗?这取决于您如何创建文件-一个代码示例会很有帮助 如果确实明确指定了编码,例如,在创建编写器时,如果编码与查看文件的机器的区域设置不匹配,则可能会看到问号、占位符框等,而不是重音字母。您可以使用locale命令检查您的区域设置,这将使您能够了解相关的字符编码。

工作环境是jboss+mssql

我正在进行查询,并将格式化结果输出到文本文件。查询结果包含一些法语重音字符

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


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

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

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

如果在编写时未指定字符编码,通常会使用系统的区域设置。在这种情况下,可能会出现此区域设置不支持所需字符的情况,因此会将它们替换为占位符。解决方案是更改应用程序运行时使用的区域设置,例如导出相应的
LC.*
环境变量

因此,简短的清单如下:

  • 你如何写你的文件?是否明确指定了编码
  • 应用程序运行的区域设置是什么(输出
    locale
    命令)
  • 使用
    od-t x1
    命令或使用类似于
    mc
    中包含的十六进制查看器,检查写入文件的实际字节数。问号是实际的问号(十六进制代码3F)还是其他字符?如果它们取一个字节,则可能是拉丁语-N(ISO 8859-N)编码之一。如果它们占用多个字节,则可能是UTF-8(我理解字母a-z看起来很正常,所以不是UTF-16)