首页 > 编程语言 > 详细

Java中需要编码的场景

时间:2016-04-19 02:04:10      阅读:137      评论:0      收藏:0      [点我收藏+]

? ? ? ? 一般涉及编码的地方包括IO操作和内存操作,IO操作又分为磁盘IO和网络IO,首先看磁盘IO是如何通过代码实现编码场景的

String file = "/home/wang/test.txt";
		String charset = "UTF-8";
		
		//写字符转换成字节流
		FileOutputStream outputStream = new FileOutputStream(file);
		OutputStreamWriter writer = new OutputStreamWriter(outputStream, charset);
		try{
			writer.write("保存的中文字符");
		}finally{
			writer.close();
		}
		
		//读取字节转换成字符
		FileInputStream inputStream = new FileInputStream(file);
		InputStreamReader reader = new InputStreamReader(inputStream, charset);
		StringBuffer buffer = new StringBuffer();
		char[] buf = new char[64];
		int count = 0;
		try{
			while( (count = reader.read(buf)) != -1 ){
				buffer.append(buf, 0, count);
			}
		}finally{
			reader.close();
		}

?

? ? ? ? IO编码的场景还有网络IO,其中有URL的编解码、HTTP Header的编解码、POST编码的编解码、HTTP BODY的编解码、还有在JS中的编码问题,都是javaweb中涉及的编解码问题了,就不细说了。

? ? ? ? 下面说说在内存操作中的编码,

? ? ? ? ?1、String类提供的编码转换方法

                String s = "中文字符串";
		//String类提供的转换方法
		byte[] b = s.getBytes("UTF-8");
		String n = new String(b, "UTF-8");

? ? ? ? ?2、Charset类提供的编码转换方法

                String s = "中文字符串";
		//Charset类提供的encode(字符到字节)和decode(字节到字符)
		Charset charset = Charset.forName("UTF-8");
		ByteBuffer byteBuffer = charset.encode(s);
		CharBuffer charBuffer = charset.decode(byteBuffer);

? ? ? ? ? 3、还有一个ByteBuffer类提供的编码转换方法,

 		ByteBuffer heapByteBuffer = ByteBuffer.allocate(1024);
		ByteBuffer bytebuffer = heapByteBuffer.putChar(c)

?

? ? ? ? 如果在应用程序中不注意指定字符编码,则在中文环境中会使用操作系统默认的编码,这样在换平台的时候容易出现乱码的情况。

Java中需要编码的场景

原文:http://hejiawangjava.iteye.com/blog/2291899

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!