将 unicode 打印到控制台

2023-11-20

我正在尝试创建一个自定义打印流,可以将本地化消息打印到控制台。我在 Windows 上执行此操作时遇到问题。这是我正在尝试做的

  • 我有一个 unicode 字符串
  • 使用 UTF-8 编码将 unicode 字符串转换为字节
  • 使用控制台编码将字节转换为新字符串
  • 使用控制台编码将新字符串打印到控制台

在这段代码中,我尝试执行上述步骤,但它失败了。奇怪的是,默认的 System.out.println 调用工作正常。但是,我想使用自定义打印流而不是依赖默认的 System.out。

有人可以解释如何使用自定义打印流将 unicode 打印到控制台吗?为什么默认的 System.out 已经可以正确打印内容了?

这是我的代码 - 我编译了它并从命令行运行它。我预先将系统区域设置为 zh-CN。

public static void main(String[] args) throws Exception{
    Charset defaultCharset = Charset.defaultCharset();
    System.out.println(defaultCharset);
    // charset is windows-1252

    String unicodeMessage =
            "\u4e16\u754c\u4f60\u597d\uff01";

    System.out.println(unicodeMessage);
    // string is printed correctly using System.out (世界你好!)


    byte[] sourceBytes = unicodeMessage.getBytes("UTF-8");
    String data = new String(sourceBytes , defaultCharset.name());

    PrintStream out = new PrintStream(System.out, true, defaultCharset.name());
    out.println(data);
    // prints gibberish: ??–????????????
}

windows-1252 字符集是这里的问题。我们需要使用UTF-8字符集来打印。以下对我有用:

public static void main(String[] args) throws Exception{
    Charset utf8Charset = Charset.forName("UTF-8");
    Charset defaultCharset = Charset.defaultCharset();
    System.out.println(defaultCharset);
    // charset is windows-1252

    String unicodeMessage = "\u4e16\u754c\u4f60\u597d\uff01";

    System.out.println(unicodeMessage);
    // string is printed correctly using System.out (世界你好!)


    byte[] sourceBytes = unicodeMessage.getBytes("UTF-8");
    String data = new String(sourceBytes , defaultCharset.name());

    PrintStream out = new PrintStream(System.out, true, utf8Charset.name());
    out.println(data);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 unicode 打印到控制台 的相关文章

  • Android Proguard Javascript 接口失败

    我在我的项目中使用了一段代码 如此处所述 http lexandera com 2009 01 extracting html from a webview http lexandera com 2009 01 extracting htm
  • Java:如何将所有 java 日期分组到相应的周中?

    Problem 我有一个很大的日期清单 我需要按周安排它们 问题 如何按以下方式对日期进行分组一年中的一周他们在吗 示例数据集 Date date new SimpleDateFormat parse 04 01 2015 Date dat
  • 使用 Apache Commons File Upload 解析 multipart/form-data

    Apache Commons File Upload 包是否提供了流解析的通用接口multipart form data块通过InputStream 附加Array
  • 读取时 R 中的内存错误.xlsx

    我正在使用以下 R 代码 也利用 Java 参数来增加内存 library xlsx options java parameters Xmx1g library XLConnect NiVe lt read xlsx version1 xl
  • EventQueue.invokeLater vrs SwingUtilities.invokeLater

    有人可以强调这两者之间的差异以及两者都是必需的实例吗 我有一个可以互换使用两者的应用程序 但想知道其中一个是否比另一个更好 显然他们都接受Runnable object 对我来说 我想我可以使用我喜欢的那个 为什么这两个相似的功能在不同的类
  • 用零向左填充字符串[重复]

    这个问题在这里已经有答案了 我见过类似的问题here https stackoverflow com questions 388461 padding strings in java and here https stackoverflow
  • 正则表达式忽略引号之间的文本

    我有一个正则表达式 它是 s 这用于分割字符串 但我不想让它分开 如果它在引号中 我不会使用 split 而是使用 Pattern 和 Matcher A demo import java util regex Matcher import
  • JOOQ初始化DAO最佳方法

    我想知道初始化 JOOQ 生成 DAO 的最佳实践 现在 我使用以下方法来初始化 JOOQ 生成的 DAO 在以下情况下 Student Dao 是 JOOQ 生成的 public class ExtendedStudentDAO exte
  • jSoup 检查跨度类是否存在

    我有一个具有以下格式的 HTML
  • Java 1.7.51 小程序的互联网限制

    在之前的几个月里 我为一个学术项目开发了一个沙箱 Java 小程序 由于预算有限 我无法与值得信赖的证书颁发机构签署它 随着 Java 1 7 51 的发布 我发现新的安全限制禁止执行小程序 因为缺少签名 到目前为止 我已经找到了解决这个问
  • 用 Maven 解决 jar 地狱问题?

    我正在使用两个 jars A 和 B B 是一个库 A 的类使用库 B 中的一些旧类 现在 当我将这两个 jars 包含在我的项目类路径中时 这给我带来了一个问题 因为它们的名称相同两个班级 但其中一个班级比另一个班级年长 并且行为方式不同
  • 我在这个正则表达式中做错了什么?

    我正在做一个关于正则表达式的学校作业 我先解释一下 我必须编写一个正则表达式来检查 URL 我必须检查的条件是 URL 是 http s 还是 ftp s 域名是 nl 还是 edu 至少有一个第三级域名 但如果该域名以 万维网 必须有一个
  • java.util.Currency.getInstance 抛出 IllegalArgumentException

    我只是想尝试一下java util Currency 但对于少数货币代码来说它让我困惑java lang IllegalArgumentException 这是我的简单代码 java util Currency c java util Cu
  • 将变量从一个 jsp 发送到另一个 jsp

    我有一个 JSP 文件jsp 1 jsp和另一个 JSP 文件jsp 2 jsp 我已经包括了jsp 2 jsp in jsp 1 jsp using 现在我需要某个元素上的单击事件 在该事件中 我想将字符串变量传输到包含的 jsp 中 假
  • 如何设置鼠标监听器的优先级

    我有一个带有列表和按钮的面板 名单已定MouseAdapter with mouseClick 我添加到面板MouseAdapter with mousePressed and mouseReleased and MouseMotionAd
  • Web 服务器上的身份验证和授权 ?

    我正在构建一个 Android 应用程序 它与 apache tomcat 上的 Web 服务器进行通信 Web 服务器采用 JAVA EE 构建 目前 为了进行身份验证和授权 我使用用户名 密码 为了管理会话 我使用令牌 因此 当用户登录
  • 使用Optional进行空检查

    我想使用可选实用程序在 JDK8 中执行空检查 这是我正在编写的代码 它给了我一个错误 java util Optional stringToUse java util Optional of childPage getContentRes
  • org.openqa.selenium.remote.service.DriverService$Builder.createArgs()Lcom/google/common/collect/ImmutableList;使用 Selenium 3.5.3

    我正在使用 IntelliJ 编写 Selenium Junit 测试 如果我直接从测试触发 测试运行正常 但是 如果我使用 JunitCore 触发 TestRunnerSuite 的测试 我遇到了以下奇怪的错误 在谷歌研究后我没有找到解
  • Log4j 不打印完整的堆栈跟踪

    我检查了 SO 中的所有答案 但没有一个真正帮助我 我的 Log4j 属性文件 log4j rootLogger debug console file log4j appender console org apache log4j Cons
  • 在 OpenCV 中将 `BufferedImage` 转换为 `Mat`

    我怎样才能转换BufferedImage to a Mat in OpenCV 我正在使用 JAVA 包装器OpenCV not JavaCV 由于我是新手OpenCV我在理解如何做时遇到一些问题Mat works 我想做这样的事情 基于

随机推荐

  • 提高动画流畅度(控件的移动)

    我通过以下方式实现了网格控件移动的动画
  • 尝试通过安全透明方法访问安全关键方法失败

    尝试通过安全透明方法 PayPal UserAgentHeader get OperatingSystemFriendlyName 访问安全关键方法 System Management ManagementObjectSearcher ct
  • 如何在初始化期间从控制器获取阶段?

    我想从我的控制器类处理阶段事件 即隐藏 所以我所要做的就是添加一个这样的监听器 Stage myPane getScene getWindow setOn whatIwant 但问题是初始化在这段代码之后立即开始 Parent root F
  • 找到隧道“中心线”?

    我有一些由代表隧道的 折线 每条线只是顶点列表 组成的地图文件 我想尝试找到隧道 中心线 粗略地在下面以红色显示 我过去使用过一些成功的方法德劳内三角剖分但我想避免使用这种方法 因为它 通常 不允许轻松 频繁地修改我的地图数据 关于我如何能
  • resultset.getObject 上的 AbstractMethodError

    所以我正在构建一个minecraft插件 该插件的一部分从mysql获取一堆块数据 并在服务器启动时将其加载到缓存中 我有一些代码在 Eclipse 测试用例中运行良好 然而 当我在本地我的世界服务器中加载插件时 我得到了异常 java l
  • 如何删除 Pandas 中以相同文本结尾的多列?

    我正在尝试删除 数据集中的一组列 所有要删除的变量都以文本 前缀 结尾 I did manage to collect them into a group using the following 然后尝试了一系列方法来删除该组 结果导致了各
  • 查找并选择 pandas DataFrame 中列最频繁的数据

    我有一个包含以下列的数据框 file DirViento Fecha 2011 01 01 ENE 2011 01 02 ENE 2011 01 03 ENE 2011 01 04 NNE 2011 01 05 ENE 2011 01 06
  • 如何在 firebase 电话身份验证 (OTP) android 中禁用 reCaptcha?

    我最近更新了 firebase 库 没有更改任何其他内容 implementation com google firebase firebase auth 20 0 1 implementation com google firebase
  • 使用 CompositeServerSelector 选择服务器 30000 毫秒后发生超时

    我尝试在 Mongolabs 中部署我的 Mongo 数据库 一切正常 然后我创建了一个新数据库 请查看我的连接字符串 public DbHelper MongoClientSettings settings new MongoClient
  • 将 argparse 与采用 **kwargs 参数的函数一起使用

    我在用着argparse接受输入并将其传递给一个函数 该函数将两个变量作为参数 kwargs 这是我的功能 import requests import sys import argparse def location by coordin
  • Android Studio 0.4.+ 自定义调试密钥库

    在 Android Studio 0 4 之前 我可以通过以下方式设置自定义调试密钥库 File gt Project Structure gt Facets gt Compiler Tab 这个选项至少在 Android Studio 0
  • 使用 JavaScript 或 jQuery 选择/复制文本

    我听说如果不使用 Flash 之类的东西就无法复制文本 在浏览器中 那么 有没有一种方法可以使用锚点和 JavaScript 或 jQuery 选择文本 p Text to be copied p a Copy Text Above a 在
  • Visual C++ 2010 与 VC 2008 的兼容性

    我正在使用 Visual C 2010 编译一个程序 但我不希望每个人都必须下载可再发行包来运行我的程序 大多数使用我的程序的人都已经有了 VC 2008 可再发行包 那么有没有办法可以编译它并与 VC 2008 兼容 或者有地方可以下载V
  • gt表中多列的条件格式化

    这是我的第一篇文章 如果我搞砸了一些事情 我深表歉意 我正在尝试将条件格式应用于 gt 表的多个列 将示例 SampA SampB 和 SampB 的结果与 Limit 进行比较 跟随其中一位的带领例子和一个不同的堆栈溢出问题 我已成功使用
  • 为什么无法捕获 MissingMethodException?

    我的 ClickOnce 部署的应用程序依赖于 NET 2 0 SP2 这ApplicationDeployment CurrentDeployment CheckForDetailedUpdate false 方法仅限 SP2 我想检查应
  • 搜索存储在 Hadoop 中的文档 - 使用哪个工具?

    我迷失在 Hadoop Hbase Lucene Carrot2 Cloudera Tika ZooKeeper Solr Katta Cascading POI 当您阅读有关该工具的信息时 您通常可以确定其他每一种工具都会被提及 我并不指
  • 使用 Sphinx 记录时省略(或格式化)变量的值

    我目前正在记录整个模块autodoc 但是 我在模块级别定义了几个包含长列表或字典的变量 它们与值一起包含在文档中 并且值未格式化 因此看起来像是 10 行的混乱 我想要的是包含这些变量的文档字符串 但要省略这些值或至少格式化它们 我试图将
  • Perl 是否保证返回顺序一致的哈希键?

    给定类似的东西 foreach keys myHash do stuff foreach keys myHash do more stuff 如果散列不改变 Perl 是否保证以一致的顺序迭代键 Yes From perldoc f key
  • 适用于所有设备的 Android XML 布局(小/普通/大/XLarge 等)

    我想创建一个支持所有屏幕尺寸的 XML 布局 在 XML 中 第一个元素是ImageView 第二个是TextView第三个是Button与图像 所以TextView应该是所有设备中的确切位置 小 中 大 超大等 我怎样才能做到这一点 XM
  • 将 unicode 打印到控制台

    我正在尝试创建一个自定义打印流 可以将本地化消息打印到控制台 我在 Windows 上执行此操作时遇到问题 这是我正在尝试做的 我有一个 unicode 字符串 使用 UTF 8 编码将 unicode 字符串转换为字节 使用控制台编码将字