标签:java 改变 string 文字 网页 内存 数组 传输 eclips
由于编码方式和解码方式的不同导致的内容丢失
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进行解码
标签:java 改变 string 文字 网页 内存 数组 传输 eclips
原文地址:http://www.cnblogs.com/akiddo/p/7388761.html