encodingconversion.java

来自「由浅入深的介绍JAVAse的基本编程思想」· Java 代码 · 共 109 行

JAVA
109
字号
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;

public class EncodingConversion {
	String file = "a.txt";
	public static void main(String[] args){
		EncodingConversion ec = new EncodingConversion();
		ec.createSampleFile();
		ec.readFile(); 
	}
	public void readFile(){
		String local = System.getProperty("file.encoding");
		try{
			FileInputStream fis = new FileInputStream(file);
			FileChannel fci = fis.getChannel();
			ByteBuffer bb = ByteBuffer.allocate(1024);
			fci.read(bb);
			bb.flip();
			Charset charset = Charset.forName("UTF-8");
			CharsetDecoder decoder = charset.newDecoder();
			CharBuffer cb = decoder.decode(bb);
			System.out.println(cb.toString());	
			fci.close();
			fis.close();
		}catch(IOException e){
			e.printStackTrace();	
		}
	}
	public void createSampleFile(){
		try{
			Charset charset = Charset.forName("UTF-8");
			CharsetEncoder encoder = charset.newEncoder();
			FileOutputStream fos = new FileOutputStream(file);
			FileChannel fco = fos.getChannel();
			
			char[] chars = "hello,你好\nhaha!".toCharArray();
			CharBuffer cb = CharBuffer.wrap(chars);
			ByteBuffer bb = encoder.encode(cb);
			fco.write(bb);
			fco.close();
			fos.close();
		}catch(IOException e){
			e.printStackTrace();	
		}
	}
	/*
	public void readFile(){
		String local = System.getProperty("file.encoding");
		try{
			BufferedReader br = new BufferedReader(new FileReader(file));
			String s = br.readLine();
			while(s != null){
				//System.out.println(s);	
				System.out.println(convert(s,local,"UTF-8"));	
				s = br.readLine();
			}
			br.close();
		}catch(IOException e){
			e.printStackTrace();	
		}
	}
	*/
	/*	
	public void readFile(){
		String local = System.getProperty("file.encoding");
		try{
			FileInputStream fis = new FileInputStream(file);
			InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
			BufferedReader br = new BufferedReader(isr);
			String s = br.readLine();
			while(s != null){
				System.out.println(s);	
				s = br.readLine();
			}
			br.close();
		}catch(IOException e){
			e.printStackTrace();	
		}
	}
	*/
	/*
	public String convert(String content,String source_charset,String dest_charset){
		String result = "";
		try{
			byte[] bytes = content.getBytes(source_charset);
			ByteBuffer bb = ByteBuffer.wrap(bytes);
			Charset charset = Charset.forName(dest_charset);
			CharsetDecoder decoder = charset.newDecoder();
			CharBuffer cb = decoder.decode(bb);
			result = cb.toString();	
		}catch(IOException e){
			e.printStackTrace();	
		}
		return result;	
	}
	*/	
	
	public String convert(String content,String source_charset,String dest_charset){
		String result = "";
		try{
			result = new String(content.getBytes(source_charset),dest_charset);
		}catch(IOException e){
			e.printStackTrace();	
		}
		return result;	
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?