java编译报错提示编码GBK的不可映射字符啥意思_java字符串编码转换

java编译报错提示编码GBK的不可映射字符啥意思_java字符串编码转换在我想要在println输出一些中文的时候,发现编码出现错误原因:java程序在编译的时候,需要使用JDK开发工具包中的JAVAC.EXE命令,而JDK开发工具包是国际版的,默认格式为UNICODE的编码格式。因此在默认情况下,javac.exe会采用默认的编码格式,什么是默认的编码格式呢?也就是我们在编译JAVA程序时,在未指定源程序文件的编码格式的情况下,JDK会优先获取操作系统的file.encoding参数,然后JDK就把我们的JAVA源程序从file.encoding编码格式转化为JAVA

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在我想要在命令行使用println输出一些中文的时候,发现编码出现错误

在这里插入图片描述


原因: java程序在编译的时候,需要使用JDK开发工具包中的JAVAC.EXE命令,而JDK开发工具包是国际版的,默认格式为UNICODE的编码格式。因此在默认情况下,javac.exe会采用默认的编码格式,什么是默认的编码格式呢?也就是我们在编译JAVA程序时,在未指定源程序文件的编码格式的情况下,JDK会优先获取操作系统的file.encoding参数,然后JDK就把我们的JAVA源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放到内存中。然后,javac把转换后的UNICODE格式的文件进行编译成class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,之后,JDK将此以UNICODE编码编译后的.class文件保存到操作系统中形成我们见到的.class文件;

为什么JDK开发工具包默认格式为UNICODE的编码格式呢?主要原因是因为UNICODE的编码格式是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。 相对于我们国内来说,现在较多使用的编码格式多位UTF-8以及GB2312等编码格式。这里编译java源程序时出现的错误: 编码 GBK 的不可映射字符 (0x80)的主要原因是,在编写java源程序代码时代码中添加了中文注释,且java文件的编码格式不是ANSI编码格式,导致在编译java源程序时报错,无法成功编译;

java编译的时候会转换成统一的unicode编码处理,最后保存的时候再转换为utf编码。所以解决的方法就是更改java源程序的编码格式。

解决办法

1.在编写java源程序代码(我用的是Notepad++)保存时,选择合适的编码语言进行保存。以notepad++编辑软件为例,在保存时把java文件转换成ANSI编码格式即可。操作方法为:选择菜单栏中的编码,选择“ANSI格式编码“,选择后保存即可在这里插入图片描述

2.使用使用命令javac -encoding UTF-8编译,以HelloWorld.java的源程序为例,编译时执行的命令为:javac -encoding UTF-8 HelloWorld.java。执行后,java源程序就被成功编译为.class文件,并且能够通过java.exe命令执行!在这里插入图片描述

问题得到了解决

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194362.html原文链接:https://javaforall.net

(0)
上一篇 2025年11月7日 下午12:43
下一篇 2025年11月7日 下午1:15


相关推荐

  • 页面优化——重绘和回流[通俗易懂]

    页面优化——重绘和回流[通俗易懂]一、写在前面页面优化在面试的过程中经常遇到的问题,今天就来总计一下重绘和回流的问题。二、重绘和回流是什么我们都知道一个页面从加载到完成,首先是构建DOM树,然后根据DOM节点进行几何布局形成render树(渲染树),当渲染树构建完成后,页面就根据DOM树开始布局,渲染树也根据设置的样式渲染这些节点。在这一过程中,比如我们删除DOM节点,修改一个元素的宽高,页面布局发生变化,DOM树也发生变化,那么肯定要重新构建DOm树,而DOM树和渲染树紧密相连,DOM树渲染完了,渲染树也会随之进行渲染,这个过程就

    2025年7月9日
    6
  • Java| 编译和反编译

    Java| 编译和反编译原文链接:http://www.yveshe.com/articles/2018/05/01/1525172129089.html什么是编程语言?在介绍编译和反编译之前,我们先来简单介绍下编程语言(ProgrammingLanguage)。编程语言(ProgrammingLanguage)分为低级语言(Low-levelLanguage)和高级语言(High-levelLa…

    2022年6月10日
    45
  • sigterm信号_一文吃透 PHP 进程信号处理

    sigterm信号_一文吃透 PHP 进程信号处理背景前两周老大给安排了一个任务,写一个监听信号的包。因为我司的项目是运行在容器里边的,每次上线,需要重新打包镜像,然后启动。在重新打包之前,Dokcer会先给容器发送一个信号,然后等待一段超时时间(默认10s)后,再发送SIGKILL信号来终止容器现在有一种情况,容器中有一个常驻进程,该常驻进程的任务是不断的消费队列里的消息。假设现在要上线,需要关杀掉容器,Docker给容器里跑的常驻进程发送一个…

    2025年8月12日
    6
  • python中itchat_python打招呼的代码

    python中itchat_python打招呼的代码#!/usr/bin/envypython3#-*-coding:utf-8-*-importitchatimportdatetime,os,platform,timedeftimerfun(sched_time):flag=0whileTrue:now=datetime.datetime.now()if…

    2026年4月16日
    8
  • Java中JDK和JRE的区别是什么?它们的作用分别是什么?「建议收藏」

    Java中JDK和JRE的区别是什么?它们的作用分别是什么?「建议收藏」DearAll:首先请允许我为大家介绍下什么是Jre?什么是jdk?JRE:首先请允许我为大家介绍下什么是Jre?什么是jdk?JRE:首先请允许我为大家介绍下什么是Jre?什么是jdk?

    2022年8月2日
    6
  • git使用命令行提交修改的代码

    git使用命令行提交修改的代码1 gitstatus 查看当前更改的代码 2 gitpull 拉取最新代码 3 gitcommitcon config properties m fixversion 提交代码到本地仓库 4 gitpushorigi 推送到远程服务器

    2026年3月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号