zoukankan      html  css  js  c++  java
  • 第一个java程序中文乱码以及如何解决

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

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

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

     

    Cmd默认使用的编码为GBK:

     

    解决方式统一编码:

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

                   

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

      

      使用javac命令正常编译:

      

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

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

           命令:

                  Javac -encoding UTF-8 HelloWorld.java

      

          

    运行

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

           Java .class文件名称

      

          

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

     

    原因:

           编译的过程是程序由.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读取是得到了有效字符序列的,但是内容混乱了,我们执行便知:

  • 相关阅读:
    maven安装以及eclipse配置maven
    jquery 图片文件转base64 显示
    Java 解析Excel文件为JSON
    Dropwizard框架入门
    使用Spring Security和OAuth2实现RESTful服务安全认证
    SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写
    13个可实现超棒数据可视化效果的Javascript框架
    C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密
    C#使用RSA证书文件加密和解密示例
    C# 中使用 RSA加解密算法
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/10531770.html
Copyright © 2011-2022 走看看