java程序乱码怎么解决

您所在的位置:网站首页 代码中汉字显示乱码怎么解决 java程序乱码怎么解决

java程序乱码怎么解决

2024-07-09 12:46| 来源: 网络整理| 查看: 265

出现问题:编码gbk的不可映射字段

原因:.java文件的编码与cmd命令执行器使用的编码不一致

我们使用的.java文件的编码为UTF-8

87a7cdf05b5153b5f5598b2501873177.png

Cmd默认使用的编码为GBK:

96cd3c07b5ec2ef3c34fa31161a5eaf8.png

5bfc48113f6c86d5120995562a5f7523.png

解决方式统一编码:

方法1:更改源文件编码为GBK与cmd.exe对应

3edb320a04f845f41ea9616f7873974b.png

更改编码为ANSI编码,对应的就是GBK编码,然后将乱码文字重新输入保存。(如果用的是电脑自带记事本,另存为存储的编码也更改为ANSI编码,然后注意内容不乱吗即可)

d21e3077db751d24a81ca62fb242b397.png

使用javac命令正常编译:

b7bb9e990096ad5e9d3d98f3ce08dead.png

解决方法2:编译的时候指定以何种编码方式进行编码

使用javac命令增加 -encoding 参数指定编码方式实现:

命令:

Javac -encoding UTF-8 HelloWorld.java

f11a91e784aa2ada0cc4fc980b952cc8.png

运行

运行java程序我们使用的是java命令

Java .class文件名称

c435e4a46040755858fbfeef9cb98166.png

出现问题:UTF-8编码编写的java文件在不指定编码方式的时候可以成功编译

ee16364c677b60281b845edb89c63eec.png

2d24d45bef16a5d3c8ec7fe453461c31.png

原因:

编译的过程是程序由.java文本->机器码(2进制)->.class文本的过程

不同的编码方式一个字符在计算机内的二进制计算的方式不一样

如UTF-8编码一个中文字符占3个字节,GBK中一个中文占2个字节。

‘你’ UTF-8可能存储为 00111010 00110101 01100000,GBK编码可能存储为 010100011 10111000

同样的内容UTF-8存储之后用GBK读取可能出现1.5个长度的内容,解析得到的内容也是和原来不一样的,如果解析不出来的话,那么就会报错不可映射字符,有些虽然可以解析出来但是与原文内容已经截然不同了。GBK存储用UTF-8存储也是同样道理。

这里你好世界转为机器码后用GBK读取是得到了有效字符序列的,但是内容混乱了,我们执行便知:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3