法文应该是ISO8859-1编码的。
byte[] b = ....//从文件读出来的字节数组
String s = new String(b,"ISO8859-1");

解决方案 »

  1.   

    你们说的方法我试过了还是不行!
    现在举个例子:十六进制的B0,后面的是“零”,换算成十进制是176,用Delphi可以得到一个摄氏度的那个小圈,现在怎样用JAVA显示!
      

  2.   

    如果楼主说的意思我没看错的话首先文本文件是法国通过Mail等方式传递到楼主手中的文本文件内容是在法国利用法语操作系统编辑保存的.如果我以上的结论正确的话分析:首先,操作系统保存文本文件时,会按操作系统默认字符集去保存
    例如在中文操作系统上是GBK, 英文系统上是ISO8859-1,日文系统上是MS932
    所以法文操作系统上保存的文件是按特定的字符集编码去保存的其次,要获得文件信息必须以正确的字符集编码去读取文件内容
    JAVA在执行中是以Unicode保存数据的,所以在程序中能正确察看到法文内容
    但是在程序输出到操作系统层的时候,又会按使用者操作系统默认的字符集编码去解析数据内容
    所以一般的乱码就是这样产生的我想楼主问这问题大概是要解决法文显示不正确的问题没看明白楼主到底读取文件后到底想干什么....private BufferedReader br ;
    private BufferedWriter bw ;public FileBeta(String pFilePath , boolean pRead) {
            this.read = pRead;
            try {
                if (pRead == true) {
                    br = new BufferedReader(new InputStreamReader(
                            new FileInputStream(pFilePath), "Unicode"));
                } else {
                    bw = new BufferedWriter(new OutputStreamWriter(
                            new FileOutputStream(pFilePath, true), "Unicode"));
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }上面是一个读取/写入保存格式为Unicode文件的例子,希望有用...
      

  3.   

    谢谢wwalpha(尘埃) !
    等下我试试你的方法。
    今天我用RandomAccessFile这个类,来访问那个文件,竟然可以读出正常的法文,可就是找不到那个法文的编码,郁闷!
      

  4.   

    法文编码可以在默认语言为法语的机器上执行一行javaSystem.out.println(System.getProperty("file.encoding"));来实现输出的是默认语言编码
      

  5.   

    这几天把Java的Documentation给翻遍了,终于在I/O操作的流中找到合适的了,可以读取他们的十六进制编码,当然Java显示出来的时候打印的是十进制的。下面给出我的主要代码:  File file = new File("ndrficj.dat");
      InputStream is = new FileInputStream(file);
      DataInputStream dis = new DataInputStream(is);
      int i=0;
      while((i=dis.read())!=-1)
      {
        System.out.println(i);
      }
      dis.close();
      is.close();
      这和我们平常对文件操作有所不同,使用的是数据流。
      所要的法文正常是"N°6émér",原来用记事本打开显示的是"N?閙閞",读取的编码也不对。用上面读取文件的方式,显示的编码为:
                               78
                               176
                               54
                               233
                               109
                               233
                               114
      用UltraEdit查看文件的十六进制编码显示的是"4E B0 36 E9 6D E9 72",现在换算后是正常的,问题解决,希望对大家以后碰见类似问题有所帮助。
      主要是找不到免费的空间,不然可以把数据文件提供下载,大家可以测试。