为啥java的默认编码不是utf-8 而是gbk
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥java的默认编码不是utf-8 而是gbk相关的知识,希望对你有一定的参考价值。
因为系统是中文语言的,得到的是GBK编码,所以肯定不是utf的。
工具:
win7
jdk
方法:
在计算机上右键选择属性
点击高级系统设置
点击环境变量
在系统变量中点新建,输入变量名为: JAVA_TOOL_OPTIONS, 变量值为:-Dfile.encoding=UTF-8,确定就可以了。
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的主要内容,如果未能解决你的问题,请参考以下文章