关于乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于乱码相关的知识,希望对你有一定的参考价值。

由于编码方式和解码方式的不同导致的内容丢失

Java会将字符串以.java文件的编码方式保存在内存中
当输出时会将字符串以.java文件的编码方式输出到输出流中

导致乱码的情况
1.程序输出时的编码方式与显示终端解码方式不同
譬如:一个以UTF8编码方式保存的.java文件输出字符串到Windows控制台(默认编码方式为GBK)就会出现乱码

Eclipse中的控制台的编码方式会随文件编码方式的而改变并保持一致,所以Eclipse中不会出现这种情况的乱码

2.在数据传输中,数据发送时的编码方式与接收时的解码方式不同

譬如:Http请求,直接以UTF-8解码网络输入流,若原网页的编码方式不是UTF-8会导致乱码
这时需要从乱码(英文字符一般不会乱码)中解析(正则或解析meta标签)出正确的编码方式
但是一般无法将乱码还原成正确的内容,因为不同字符集映射关系不同,错误的解码会导致信息的丢失,表现为“???锟斤拷”等经典乱码
这就要求在接收数据时,采用字节流的方式,先不进行解码,也就不会造成信息的丢失

另:String类的成员方法getBytes(charSet)是将此字符串按照charSet进行编码,返回得到的的byte数组
String类的构造方法new String(bytes,charSet)是将字节数组bytes按charSet进行解码

以上是关于关于乱码的主要内容,如果未能解决你的问题,请参考以下文章

关于mysql中文乱码的问题

关于win10系统文字乱码?

关于制作网页时乱码的问题详解

关于webstorm打开现有页面出现乱码的问题?

关于网页乱码问题

JSP基础——关于中文乱码问题