我想在java程序中读取如下字符,如下字符,我放在一个TXT文件中,但我发现,无论怎么试,都发现无法顺利读入,这怎么搞?
哪里要注意?
¡=i
¿=?
΄='
÷=/
¢=c
£=$
¥=$
©=C
¼=1/4
½=1/2
¾=3/4
ª=a
á=a
à=a
Ä=A
ä=a
ǎ=a
ă=a
Ā=A
ā=a
Ã=A
ã=a
Å=A
å=a
Ą=A
ą=a
Ấ=A
ấ=a
Ầ=A
ầ=a
Ắ=A
ắ=a
ằ=a
Ǻ=A
ǻ=a
Ẫ=A
ẫ=a
Ẵ=A
ẵ=a
Ả=A
ả=a
ẩ=a
Ẳ=A
ẳ=a
ạ=a
Ậ=A
ậ=a
Ặ=A
ặ=a
Ć=C
ć=c
ċ=c
Ĉ=C
ĉ=c
Č=C
č=c
Ç=C
ç=c
Ď=D
ď=d
Đ=D
đ=d
Ð=D
ð=o
É=E
é=e
È=E
è=e
Ė=E
ė=e
Ë=E
ë=e
ě=e
Ĕ=E
ĕ=e
ē=e
Ẽ=E
ẽ=e
Ę=E
ę=e
Ế=E
ế=e
ề=e
Ễ=E
ễ=e
Ẻ=E
ẻ=e
Ể=E
ể=e
ẹ=e
Ệ=E
ệ=e
Ə=e
ƒ=f
Ġ=G
ġ=g
Ĝ=G
ĝ=g
Ğ=G
ğ=g
ģ=g
Ĥ=H
ĥ=h
Ħ=h
ħ=h
I=I
Í=I
í=i
Ì=I
ì=i
İ=I
Î=I
î=i
Ï=I
ï=i
ǐ=i
Ĭ=I
ĭ=i
ī=i
Ĩ=I
ĩ=i
Į=I
į=i
ỉ=i
Ị=I
ị=I
ij=i
Ĵ=J
ĵ=J
ĸ=k
Ķ=K
ķ=k
Ĺ=L
ŀ=I
Ŀ=L
Ľ=L
ľ=l
Ļ=l
ļ=l
Ł=L
Ń=n
ń=n
Ň=N
ň=n
Ñ=N
ñ=n
Ņ=N
ņ=n
ʼn=n
ŋ=n
Ó=O
ó=o
Ô=O
ô=o
Ö=O
ö=o
ǒ=o
Ŏ=O
ŏ=o
Ō=O
ō=o
Õ=O
õ=o
Ő=O
ő=o
ố=o
Ồ=O
ồ=o
Ø=O
ø=o
Ỗ=O
ỗ=o
ǿ=o
Ỏ=O
ỏ=o
ơ=o
Ổ=O
ổ=o
Ọ=O
ọ=o
Ớ=O
ớ=o
Ờ=O
ờ=o
ỡ=o
ộ=o
Ở=O
ở=o
Ợ=O
ợ=o
Ŕ=R
ŕ=r
Ř=R
ř=t
Ŗ=R
ŗ=r
ś=s
Ŝ=S
ŝ=s
Š=S
š=s
Ş=S
ş=s
ß=B
ſ=J
Ť=T
ť=t
ţ=t
Þ=p
þ=p
Ŧ=T
ŧ=t
Ù=U
ù=u
Û=U
û=u
Ü=U
ü=u
ǔ=u
Ŭ=U
ŭ=u
ū=u
Ũ=U
ũ=u
Ů=U
ů=u
ų=u
Ű=U
ű=u
ǘ=u
ǜ=u
ǚ=u
Ủ=U
ủ=u
Ư=U
ư=u
Ụ=U
ụ=u
ứ=u
Ừ=U
ừ=u
Ữ=U
ữ=u
Ử=U
ử=u
ự=u
Ẃ=W
ẃ=w
Ẁ=W
ẁ=w
Ŵ=W
ŵ=w
Ẅ=W
ẅ=w
Ý=Y
ý=y
Ỳ=Y
ỳ=y
Ŷ=Y
ŷ=y
ÿ=y
Ÿ=Y
ỹ=y
Ỷ=Y
ỷ=y
Ỵ=Y
ỵ=y
Ź=Z
Ż=Z
ż=z
Ž=Z
ž=z
α=a
ά=a
Ά=A
β=B
δ=o
Έ=E
Ή=H
ι=l
ί=i
ϊ=i
Ϊ=I
κ=k
μ=u
Ό=O
ρ=p
υ=v
ύ=v
Ύ=Y
ϋ=v
ΰ=v
χ=x
ω=w
Ё=E

解决方案 »

  1.   

    可能是编码格式的问题, LZ采用UTF-8试过吗 ?
      

  2.   

    你应该用native2ascii把特殊字符转成unicode存在properties文件里,然后读取properties
      

  3.   


                fileIS = new FileInputStream(fileName);
                InputStreamReader inputStreamReader = new InputStreamReader(fileIS);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                System.out.println(bufferedReader.readLine());
      

  4.   

    就是说读进来再System.out.println跟原来就不一样了,有时候还隔行提示一下错误,
    TXT是unicode,用ultraedit32另存为UTF-8方式也试过了,
      

  5.   

    直接放在文本文件中, 就可以正确读取, 前提是, 文本文件的字符集为utf-8
      

  6.   

    那么还有一点我没搞清楚,如果不含有这些小语种字符,那么,unicode的也可以正确读取,是吗?
    因为以前,没有这些特殊字符时,是正确的,UTF-8我试过一次了,那我再试一下
      

  7.   

    不对啊,读入再打印出之后,出来的是汉字,并且匹配这个正则表达式时也出错了,<.+=.+>
      

  8.   

    等下我把完整Source给你  
      

  9.   

    package com.question;import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;import com.sun.swing.internal.plaf.metal.resources.metal;public class Q13 {
        
        private static final String FILE_NAME = "E:/ganymede/workspaceSVN/SDK/bin/test.txt";
        public void readFile(String fileName) {
            try {
                
                /*
                 * get the reader
                 */
                InputStream inputStream = new FileInputStream(fileName);
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedInputStream = new BufferedReader(inputStreamReader);
                String line = bufferedInputStream.readLine();
                while(line != null) {                // print the result
                    System.out.println(line);
                    line = bufferedInputStream.readLine();
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        public static void main(String[] args) {
            Q13 q13 = new Q13();
            q13.readFile(FILE_NAME);
        } 
    }
      

  10.   

    呀,楼主同学,一看你的问题,这不就是典型的键值对儿的例子嘛,那用Properties文件来存储,当成一个属性文件,这样读取的话就不会出现问题了啊,不妨试一下的
      

  11.   

    我这里一共291行,但有80行,读出来就是有问题,我用(Scanner in =new Scanner(new FileReader("3.txt"));
    读的,80行就是通不过正则表达式<'.+=.+>如果将那80行不打印,用editplus打开是utf-8格式,显示正常,
    如果打钱,用editplus打开就是ansi,乱码
      

  12.   

    Properties 这个文件也可以被不懂技术的改吧
    关注下
      

  13.   

    文件中包含着用命令(native2ascii sour.txt dest.txt)无法正常转换的字符(/uxxxx),这怎么处理?
      

  14.   

    可以用InputStreamReader类,这个类可以自己填编码方式
    InputStreamReader reader = new InputStreamReader(new FileInputStream(new File(filepath,filename)),"Unicode");