java里中文乱码

梦想与她 提交于 2020-10-09 08:58:34
public static void main(String[] args) throws Exception {
    String str = "的";

    int utf8Lenth = str.getBytes("utf-8").length;
    int gbkLength = str.getBytes("gbk").length;
    int utf16Length = str.getBytes("utf-16").length;
    System.out.println(str);

    System.out.println(str.length());
    System.out.println("============================");
    System.out.println(utf8Lenth);
    System.out.println("============================");
    System.out.println(gbkLength);
    System.out.println("============================");
    System.out.println(utf16Length);
}

正常情况,长度分别为1,3,2,4

但是不知道怎么弄的,出现了乱码,输出长度为2,6,3,6,输出str的时候为乱码

用javac直接编译的时候,报错:编码GBK的不可映射字符

用javac -encoding utf-8可正常编译并且运行结果正常

原因应该是编码不一致造成的

 

1. 看一下系统编码

    

//查看当前系统的字符编码方式
System.out.println(Charset.defaultCharset().name());
//查看当前系统的编码方式
System.out.println(System.getProperty("file.encoding"));

2. 查看idea设置

    File --> Settings --> Editor --> File Encodings

 

File --> Other Settings --> Default Settings --> Editor --> File Encodings

 

3. 查看.idea/encodings.xml中是否设置了某个类特殊的编码

4. 文件编码格式

    Idea不能智能的将UTF-8+BOM转化为普通UTF-8

    右下角,将编码格式转化为GBK,选择Convert,然后再将编码格式转化为UTF-8,恢复正常

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!