当前位置: 首页 > 面试题库 >

为什么即使使用UTF-8,在Windows和Linux中¿的显示也不同?

欧阳学真
2023-03-14
问题内容

为什么以下显示在Linux和Windows中有所不同?

System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));

在Windows中:

¿

在Linux中:

一个


问题答案:

System.out.println()以系统默认编码输出文本,但是控制台根据其自身的编码(或“代码页”)设置解释该输出。在Windows机器上,这两种编码似乎匹配,但是在Linux机器上,输出显然是以UTF-8格式输出的,而控制台将其解码为ISO-8859-1之类的单字节编码。或者,如Jon所建议的那样,源文件被保存为UTF-8并javac正在以其他方式读取它,可以通过使用Unicode转义来避免此问题。

当您需要输出除ASCII文本以外的任何内容时,最好的选择是使用适当的编码将其写入文件,然后使用文本编辑器读取文件-
控制台过于受限且过于依赖系统。顺便说一下,这段代码:

new String("¿".getBytes("UTF-8"), "UTF-8")

…对输出没有影响。所做的全部工作就是将字符串的内容编码为字节数组,然后再次对其进行解码,从而再现原始字符串,这是一种昂贵的无操作操作。如果要以特定编码输出文本,则需要使用OutputStreamWriter,如下所示:

FileOutputStream fos = new FileOutputStream("out.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");


 类似资料:
  • 3. 在Linux C编程中使用Unicode和UTF-8 目前各种Linux发行版都支持UTF-8编码,当前系统的语言和字符编码设置保存在一些环境变量中,可以通过locale命令查看: $ locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE

  • 我有一个使用UTF-8编码的XML文件,在XML声明中正确指定。 该文件包括一些标准ASCII以外的字符。特别地,它包括带元音字符的o。它已经正确地将其表示为一个2字节的UTF-8序列c0b6。但在IE或Firefix中打开时,它会显示为除法符号“÷”,即使我已经将默认字体设置为Arial Unicode。浏览器正在正确地检测到(显式指定的)UTF-8编码。 显示如下所示: 我可以上传文件,但它相

  • 问题内容: 我想将jsoup解析为utf -8,但我不能。我尝试了我所知道的一切,然后在Google上进行了搜索。 我的目标是: 但是 不是。 请帮忙 问题答案: 淘汰 你好世界Öçasasa

  • 问题内容: 我有一个带有2个表的MySql数据库: 国家是公正的。 结果是a ,a和a 。 并非所有国家/地区在每个日期都有结果。 如何创建一个查询,列出所有国家及其特定结果,但仍然列出它们,并且如果结果表上没有结果,则显示0? 问题答案: 在两个表之间使用LEFT JOIN 要显示0(对于该列),如果没有结果,请使用IFNULL。

  • 问题内容: 我在脚本顶部看到了几个使用此脚本的py脚本。在什么情况下应该使用它? 问题答案: 根据文档:这允许你从默认的ASCII切换到其他编码,例如UTF-8,Python运行时在必须将字符串缓冲区解码为unicode时将使用该编码。 此功能仅在Python扫描环境时在Python启动时可用。必须在系统范围的模块中调用,评估完该sys模块后,将从该模块中删除该功能。 实际使用它的唯一方法是将属性

  • 问题内容: 我不确定为什么它不显示sql语句。我之前使用过它(在较早的春天,这次我使用3) 在ApplicationContext中,我有: 在log4j中: 其他一切似乎都很好,但是它并没有显示sql。 我有想念吗? (或者是否可以从org.hibernate.cfg.Environment.getProperties()的SessionFactory打印?它没有显示show_sql,可能甚至没