本帖最后由 rslheima 于 2012-6-26 19:13 编辑
为什么同样是用GBK编码的“你好”两个字使用不同方法,都用utf-8解码,为什么一个是两个问号??,一个是三个问号???- package io.ENCODE;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.UnsupportedEncodingException;
- import java.util.Arrays;
- public class Encode {
- public static void main(String[] args) throws IOException {
- System.out.println("使用流操作转换“你好“");
- write();
- read();
- System.out.println("使用编码,解码--”你好“");
- encode();
- }
- //------------------使用gbk编码写入”你好“-------------------------
- public static void write() throws IOException{
- OutputStreamWriter osw=new OutputStreamWriter(
- new FileOutputStream("C:\\Users\\Administrator\\Desktop\\utf.txt"),"gbk");
- osw.write("你好");
- osw.close();
- }
- //------------------使用utf-8编码读取“你好”-----------------------
- public static void read() throws IOException{
- InputStreamReader irs=new InputStreamReader(new FileInputStream("C:\\Users\\Administrator\\Desktop\\utf.txt"),"utf-8");
- char [] buf=new char[10];
- int ch=0;
- ch=irs.read(buf);
- System.out.println(new String (buf,0,ch));
- }
- //-----------------使用字符编码,解码方式,-----------------------
- public static void encode() throws UnsupportedEncodingException{
- String str="你好";
- //-----------------使用gbk编码----------
- byte[] b=str.getBytes("gbk");
- //System.out.println(Arrays.toString(b));
- //----------------使用utf-8解码-----------
- String s1=new String(b,"utf-8");
- System.out.println(s1);
- }
- }
复制代码 结果:
使用流操作转换“你好“
??
使用编码,解码--”你好“
???
|
|