为啥java的默认编码不是utf-8 而是gbk

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥java的默认编码不是utf-8 而是gbk相关的知识,希望对你有一定的参考价值。

因为系统是中文语言的,得到的是GBK编码,所以肯定不是utf的。

工具:

win7

jdk

方法:

    在计算机上右键选择属性

    点击高级系统设置

    点击环境变量

    在系统变量中点新建,输入变量名为: JAVA_TOOL_OPTIONS, 变量值为:-Dfile.encoding=UTF-8,确定就可以了。

参考技术A 首先理解java的字符概念
java中字符串是字符的序列,虚拟机内部的字符都是16位的unicode字符,等价于C++中的WCHAR,也是为了实现虚拟机方便

WCHAR叫做宽字符,对应的MuitiChar叫做多字符,这种多字符中字符的位数不唯一

GBK 和 UTF8 是多字符的不同编码形式

s=new String(s.getBytes("gbk"),"utf-8");
的意思是:
byte[] bytes=s.getBytes("gbk");
s=new String(bytes,"utf-8");

第一句是将s对应的gbk编码转出来,形成一个字节流
第二句是将这个字节流按照utf-8编码转为java字符串,因此相当于将gbk编码的字节流当做utf-8来使用,这样在中文中会出现乱码

你的问题是,接口返回的已经是utf-8 所以它必须是byte[] 流,如果是字符串的话就不好办了本回答被提问者和网友采纳

javac编译错误: 编码UTF8/GBK的不可映射字符

转自:https://blog.csdn.net/leytton/article/details/52740171

 

Linux下为UTF-8编码,javac编译gbk编码的java文件时,容易出现“错误: 编码UTF8的不可映射字符”

解决方法是添加encoding 参数:javac -encoding gbk WordCount.java

 

Windows下为GBK编码,javac编译utf-8编码的java文件时,容易出现“错误: 编码GBK的不可映射字符”

解决方法是添加encoding 参数:javac -encoding utf-8 WordCount.java

 

如果还不能解决,将其保存成ANSI编码

首先记事本打开java源文件。然后另存为,选择ANSI编码。

 

以上是关于为啥java的默认编码不是utf-8 而是gbk的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么获得文件编码格式

JAVA编码时为啥用的是utf-8呢

我的keil 4为啥不能改变编码格式?没有那个选项?

java 怎么判断文本内容的编码格式

为啥java编程中写的汉字变成乱码了???

java 将编码格式为utf-8的文件内容以 GBK编码存到txt文档