Java 中文字符串输出乱码

news2024/12/27 12:13:40

Java 中文字符串输出乱码

  • 1、IDE和系统控制台编码格式
  • 2、设置标准输出编码

1、IDE和系统控制台编码格式

Java 中文字符串输出乱码 问题是由于代码格式和输出控制台的编码格式不同造成的。
一般代码文件都是推荐使用UTF-8格式(默认),此时在中文系统环境下,输出终端都是不匹配的。下面截图运行结果:代码编码UTF-8IDE输出编码GBKWin10系统终端编码x-mswin-936
(IntelliJ IDEA中文不友好这个是设置IDE编码,当时没有深究)

String fileCharset = System.getProperty("file.encoding");
String outCharset = System.out.charset().name();

System.out.println("fileCharset=" + fileCharset + "; outCharset=" + outCharset);
System.out.println("System.out.charset() = " + System.out.charset());
System.out.println("native.encoding = " + System.getProperty("native.encoding"));
System.out.println("sun.jnu.encoding = " + System.getProperty("sun.jnu.encoding"));
System.out.println("sun.stdout.encoding = " + System.getProperty("sun.stdout.encoding"));
System.out.println("sun.io.unicode.encoding = " + System.getProperty("sun.io.unicode.encoding"));
System.out.println("你好 java");

IntelliJ IDE输出:
在这里插入图片描述
win10 终端:
在这里插入图片描述
在这里插入图片描述

2、设置标准输出编码

  • 上面看出:获取代码文件编码System.getProperty("file.encoding")、获取IDE输出编码获取System.out.charset().name()、系统终端编码System.getProperty("sun.stdout.encoding")
  • System.out.charset().name()实质获取System.getProperty("sun.stdout.encoding"),属性"sun.stdout.encoding"为空时,编码默认为native.encoding
    在这里插入图片描述
  • Console.charset() 上面注释sun.stdout/err.encoding等效于Console.charset(),但是API 17生效。
    在这里插入图片描述
public class Test {
    public static void main(String[] args) {
        String fileCharset = System.getProperty("file.encoding");
        String outCharset = System.out.charset().name();

        System.out.println("fileCharset=" + fileCharset + "; outCharset=" + outCharset);
        System.out.println("System.out.charset() = " + System.out.charset());
        System.out.println("native.encoding = " + System.getProperty("native.encoding"));
        System.out.println("sun.jnu.encoding = " + System.getProperty("sun.jnu.encoding"));
        System.out.println("sun.stdout.encoding = " + System.getProperty("sun.stdout.encoding"));
        System.out.println("sun.io.unicode.encoding = " + System.getProperty("sun.io.unicode.encoding"));
        System.out.println("你好 java");
        if (System.console() != null) {
            System.out.println("System.console().charset() = " + System.console().charset().name());
        }

        System.out.println("#########################");
        String stdoutEncoding = System.getProperty("sun.stdout.encoding");
        stdoutEncoding = stdoutEncoding == null ? System.getProperty("file.encoding") : stdoutEncoding;
        System.out.println("stdoutEncoding = " + stdoutEncoding);
        if (!System.out.charset().name().equals(stdoutEncoding)) {
            try {
                PrintStream ps = new PrintStream(System.out, true, stdoutEncoding);
                System.setOut(ps);
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
        }

        System.out.println("System.out.charset() = " + System.out.charset());
        System.out.println("native.encoding = " + System.getProperty("native.encoding"));
        System.out.println("sun.jnu.encoding = " + System.getProperty("sun.jnu.encoding"));
        System.out.println("sun.stdout.encoding = " + System.getProperty("sun.stdout.encoding"));
        System.out.println("sun.io.unicode.encoding = " + System.getProperty("sun.io.unicode.encoding"));
        System.out.println("#########################");
        System.out.println("你好 java");
    }
}

IntelliJ IDE输出:
在这里插入图片描述

win10 终端:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI 绘画 | Stable Diffusion 图生图

图生图简介 Stable Diffusion 不仅可以文生图,还可以图生图。文生图就是完全用提示词文本去生成我们想要图片,但是很多时候会有词不达意的感觉。就像我们房子装修一样,我们只是通过文字描述很难表达出准确的想要的装修效果,如果能…

算法设计与分析第二章作业

1. 描述最大字段和的分治算法 题目 思路 判断最大子段和,可以用分治的思想,每次将序列一分为二,选择两个序列的最大子段和。 但是这里还有一种可能,就是子段可以横跨两个子序列,所以我们的最大子段和就是&#xff1…

统计学习方法 条件随机场

文章目录 统计学习方法 条件随机场随机场马尔可夫随机场定义因子分解 条件随机场定义参数化形式简化形式矩阵形式 概率预测问题前向-后向算法概率的计算期望值的计算 学习问题改进的迭代尺度法拟牛顿法 解码问题 统计学习方法 条件随机场 学习李航的《统计学习方法》时&#x…

4 函数的升级-下

重载(overload) 同一个标识符在不同的上下文有不同的意义 如汉语中“洗”和不同的字搭配后,有不同的含义,play 和不同的单词搭配后有不同的含义。 函数重载:用同一个函数名定义不同的函数,通过不同的参数搭…

SpringBoot整合RabbitMQ学习笔记

SpringBoot整合RabbitMQ学习笔记 以下三种类型的消息,生产者和消费者需各自启动一个服务,模拟生产者服务发送消息,消费者服务监听消息,分布式开发。 一 Fanout类型信息 . RabbitMQ创建交换机和队列 在RabbitMQ控制台,新…

飞书开发学习笔记(三)-利用python开发调试云文档和电子表格

飞书开发学习笔记(三)-利用python开发调试云文档和电子表格 一.建立Python飞书开发环境 首先还是进入开放平台下的API调试台 飞书开放平台:https://open.feishu.cn/app?langzh-CN 以获取"我的空间"下的文件清单为例,通过获取飞书API调试台提…

展开一个结构加法等式

4a6 4a8 - - - - - 1 - 1 - - - 1 - 1 - - 1 - - 1 - - 1 - - 1 - - - - 在5-1的方向上具体展开4a64a8 25 19 19 19 19 19 19 19 25 19 19 19 19 19 19 19 1 10 10 10 10 10 10 10 1 10 10 10 10 10 10 10 …

矩阵等价和向量组等价的一些问题

什么是向量组?答:向量组是由若干同维数的列向量(或同维数的行向量)组成的集合。什么是向量组等价?答:两个向量组,各自拼成矩阵A和B,向量组等价就是三秩相等,即r&#xff…

如何发布自己的golang库

如何发布自己的golang库 1、在 github/gitee 上创建一个 public 仓库,仓库名与 go 库名一致,然后将该仓库 clone 到本地。 本文这里使用 gitee。 $ git clone https://gitee.com/zsx242030/goutil.git2、进入项目文件夹,进行初始化。 $ go…

【unity实战】实现类似英雄联盟的buff系统

文章目录 先来看看最终效果前言开始BUFF系统加几个BUFF测试1. 逐层消失,升级不重置剩余时间的BUFF2. 一次性全部消失,升级重置剩余时间的BUFF3. 永久BUFF,类似被动BUFF4. 负面BUFF,根据当前BUFF等级计算每秒收到伤害值&#xff0c…

Docker Stack部署应用详解+Tomcat项目部署详细实战

Docker Stack 部署应用 概述 单机模式下,可以使用 Docker Compose 来编排多个服务。Docker Swarm 只能实现对单个服务的简单部署。而Docker Stack 只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。 stack是一组共享…

Pyhotn: Mac安装selenium没有chromedriver-114以上及chromedriver无法挪到/usr/bin目录下的问题

1.0 安装selenium 终端输入: pip install selenium 查看版本: pip show selenium2.0 安装chromedriver 查看chrome版本 网上大多数是,基本到114就停了。 https://registry.npmmirror.com/binary.html?pathchromedriver/ 各种搜索&#…

Blender基础操作:面操作细分、整体切分、挤出、内插、尖分、融并、切割、面的法向、填充等

目录 1. 面操作:进入‘面选择’模式,选择一个面 2. 面的挤出 3. 内插面 4. 尖分面 5. 面的切割 6. 面的法向normal 7. 填充面 8. X-Ray透视 1. 面操作: 进入“面选择”模式,选择一个面 4种操作手段: 菜单 工…

四、数据库系统

数据库系统(Database System),是由数据库及其管理软件组成的系统。数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介…

Redis01-缓存击穿、穿透和雪崩

目录 开场白-追命3连 使用场景 01缓存穿透场景与方案 02布隆过滤器 03缓存击穿场景与方案 04缓存雪崩场景与方案 开场白-追命3连 看你项目中有说用到Redis,都是哪些场景使用了Redis呢? 如果发生了缓存穿透、击穿、雪崩如何应对呢?缓存…

研读论文之Image Quality-aware Diagnosis via Meta-knowledge Co-embedding

研读论文之 Image Quality-aware Diagnosis via Meta-knowledge Co-embedding 前言一、简介二、主要内容2.1. 图像退化2.2. 图像质量感知诊断(IQAD)2.3. 元知识协同嵌入网络(MKCNet) 三、实现过程3.1. IQAD问题3.2. 元知识协同嵌入网络 (MKCNet)3.2.1功能3.2.2优化策略3.2.3 Ta…

轻信息服务展示预约小程序的内容是什么

预约几乎是适应所有经营商家的,可以提升客户服务/产品获取度、锁客及便捷性需求,同时也利于提升商家整体经营效率,无论获客还是留存线索都有很高帮助。 尤其对线下服务实体店来说,需要预约形式将客户引流到店,传统商家…

考研数学(数二)核心要点(极限)

前言 okey,今天难得有时间那就稍微整理一下数学部分的内容。注意,本文仅适用于考研冲刺阶段,对知识点进行复习使用。前提是你已经知道了相关知识点,我这里只是把我认为比较重要的,我自己总结的内容给出来,…

基于机器学习的学生成绩预测

学生成绩预测是一个基于回归问题的流行数据科学案例研究。对于数据科学初学者来说,这是一个很好的回归问题,因为它很容易解决和理解。本文中,将带你通过使用Python的机器学习来完成学生成绩预测的任务。 学生成绩预测(案例研究&a…

本地idea远程调试服务器程序

本文主要介绍idea本地调试远程服务器程序的方式。相信很多同行跟我一样,在最初接触公司项目的时候,遇到测试提出的缺陷,往往会在本地进行调试、替换jar包远程调试等方式,本地调试往往会导致数据和环境不一致的问题使得问题无法复现…