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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用 Amazon EC2 启动 Windows 虚拟机「建议收藏」

    使用 Amazon EC2 启动 Windows 虚拟机

    2022年2月15日
  • Nmap 命令[通俗易懂]

    Nmap 命令[通俗易懂]Nmap命令探测主机信息一、扫描指定IP所开放的端口输入命令:nmap-sS-p-1-65535-v192.168.1.106表示用半开扫描,扫描指定端口为1到65535,并且显示扫描过程Nmap常用扫描参数及说明参数 说明-sT TCPconnect()扫描,这种方式会在目标主机的日志中记录大批连接请求和错误信息-sS 半开扫描,很少有系统能够把它记入系统日志。不过,需要root权限-sF-sN 秘密FIN数据包扫描,XmasTree、Null扫描模式-sP pin

    2022年5月28日
  • listagg within group函数的作用_oracletochar函数

    listagg within group函数的作用_oracletochar函数前言:最近在写一些比较复杂的SQL,是一些统计分析类的,动不动就三四百行,也是首次写那么长的SQL,有用到一些奇形怪状的SQL函数,在这里结合网上的例子做一些笔记,以后用到不记得用法可以翻出来看!1.基础用法:LISTAGG(XXX,XXX)WITHINGROUP(ORDERBYXXX),就像聚合函数一样,通过Groupby语句,把每个Group的一个字段,拼接起来…

    2022年9月7日
  • c++ priority queue_priority

    c++ priority queue_priority既然是队列那么先要包含头文件#include<queue>优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的定义:priority_queue<Type,Container,Functional>Type就是数据类型,Container就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用

    2022年10月21日
  • python大数据分析实例-用Python整合的大数据分析实例

    python大数据分析实例-用Python整合的大数据分析实例用Python进行数据分析的好处是,它的数据分析库目前已经很全面了,有NumPy、pandas、SciPy、scikit-learn、StatsModels,还有深度学习、神经网络的各类包。基本上能满足大部分的企业应用。用Python的好处是从数据抽取、数据收集整理、数据分析挖掘、数据展示,都可以在同一种Python里实现,避免了开发程序的切换。这里就和大家分享我做的一个应用实例。解决问题:自动进…

    2022年5月29日
  • JQuery 下jquery-1.4.2.js和jquery-1.4.2.min.js这两个文件有什么区别 转

    JQuery 下jquery-1.4.2.js和jquery-1.4.2.min.js这两个文件有什么区别 转

    2021年8月11日

发表回复

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

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