InputStreamReader   FileInputStream配合读UTF8文件时,为什么最前面总有个?号
后面的中文都是对的但最前面,总有个?号

解决方案 »

  1.   

    可以试试用DataInputStream 类里的 readUTF() 方法去读取 UTF8文件
      

  2.   

    这样试试
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:/web.xml"),"utf-8"))
    然后用br.readLine()方法
      

  3.   

    编码问题吧
    试试ls的,换换GBK或者GB2312 44.。。
      

  4.   

    LZ 的文件 用 工具转成 UTF8 编码格式文件了?
    还是只是用 readUTF() 来读取任意文件?
      

  5.   

    package com.csdn;import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;/**
     * @author xiaotang E-mail: [email protected]
     * @version1.00 创建时间:Mar 31, 2009 7:45:45 PM 类说明:
     */public class DataStreamTest {
    /**
     * 将数据写入文件
     */
    public static void write() {
    FileOutputStream fs;
    try {
    fs = new FileOutputStream("cc.txt");
    BufferedOutputStream bos = new BufferedOutputStream(fs); DataOutputStream dos = new DataOutputStream(bos);
    dos.writeUTF("我是中国人,");
    dos.writeUTF("我爱中国!!");
    dos.close(); } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } /**
     * 读取文件数据
     */
    public static String reade() {
    FileInputStream is;
    String s = "";
    try {
    is = new FileInputStream("cc.txt");
    BufferedInputStream bis = new BufferedInputStream(is); DataInputStream dis = new DataInputStream(bis);
    s = dis.readUTF();
    s+=dis.readUTF();
    dis.close();
    } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return s;
    } public static void main(String[] args) {
    // TODO Auto-generated method stub DataStreamTest.write();
    String s = DataStreamTest.reade();
    System.out.println(s); }}
      

  6.   

    我用系统的记事本打开的,另存为utf-8格式,然后读出的字符第一个就是?号,其它是正常的。
      

  7.   

    用FileInputStream来读的话,它是按字节流来读的,而UTF8编码头是EF BB BF。
      

  8.   

    我常用的方法是
    writeutf()方法,
    应该是编码问题