Linux上的UTF8问题

Linux上的UTF8问题,linux,encoding,Linux,Encoding,我有一些从数据库中获取数据的代码,数据库代码页是UTF8。当我在linux机器上运行代码时,有些字符会显示为问号,但当我在windows服务器上运行相同的代码时,所有字符都会正确显示 当我这样做时: $>$LANG 返回以下内容: en_SG.UTF-8 en_SG看起来不正确,应该是en_US 但是返回字符串的后一部分是UTF-8,这很好。还有什么可以解决角色损坏问题的方法吗?一般来说?当您使用的字体没有该Unicode代码点的表示形式时出现。您正在查看的内容和使用的字体是什么?能否提供有关环

我有一些从数据库中获取数据的代码,数据库代码页是UTF8。当我在linux机器上运行代码时,有些字符会显示为问号,但当我在windows服务器上运行相同的代码时,所有字符都会正确显示

当我这样做时: $>$LANG 返回以下内容: en_SG.UTF-8

en_SG看起来不正确,应该是en_US
但是返回字符串的后一部分是UTF-8,这很好。还有什么可以解决角色损坏问题的方法吗?

一般来说?当您使用的字体没有该Unicode代码点的表示形式时出现。您正在查看的内容和使用的字体是什么?

能否提供有关环境的信息?您使用什么编程语言,使用什么库或方法连接数据库并从数据库中提取信息,以及使用什么库或方法将数据输出到文件

我假设在Windows和Linux上运行代码的两个实例都是从同一个物理数据库访问数据

我要寻找的罪魁祸首是,您的一个I/O正在将Unicode数据转换为其他可能的ASCII或拉丁代码页


可能是数据库本身正在转换,因为数据库方法默认为不同的编码。可能是数据库方法正在转换传入的信息,因为语言本身默认为不同的代码页。可能是输出方法正在转换。

特殊字符是商标、注册等,显示为问号。我的代码的输出进入一个xml文件。现在,当我使用shell查看xml文件的内容时,我看到了问号。此外,如果我将文件从linux带到windows计算机,我仍然会看到问号。当发生字符集转换且目标字符集没有源字符的代码时,也可能会出现问号。显然,在Linux上已经发生了转换,而在Windows上没有。请注意,某些DB客户端库不使用$LANG。例如,Oracle客户端使用$NLS_LANG变量。值得再次检查DB client documentation.hmm,我在linux机器上没有设置$NLS_LANG,但它是在windows机器上设置的。也许这就是为什么我在linux中使用垃圾字符的原因?我可以尝试设置此环境变量Use od-c来查看可疑文本,并将其中一些发布到这里。我正在运行RedHat Enterprise Linux 3编程语言lanuguage是Java使用JDOM编写XML是的,数据库实例是相同的,无论我是从windows运行代码还是从linuxNo运行Java专家蜂拥而至以节省时间?: