<?xml version="1.0" encoding="UTF-8" standalone="no"?>
        <student>
<idexam>20130415</idexam>
<idcard>210923195401138219</idcard>
<name>刘德华</name>
<location>江南</location>
<grade>45.0</grade>
        </student>这段是XML。是我通过eclipse,在控制台输入后,读取控制台的输入,然后将数据写入的该xml文件。
读取通过的是如下代码,
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try
{
String str = br.readLine();写入代码如下:
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer tf = tfactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(new
FileOutputStream("src/student.xml")));在中间,我一直都没进行任何的编码操作。当然,不知道编译器会不会有什么自己的改动。但是问题就是出现这里,这个数据,我可以通过打开xml文件查看,但是一旦通过代码读取,则会提示错误。
从第一个<student   的s位置开始出现错误。
(上面的定义xml版本,编码 那一行,是我自己先写好了的)
提示错误的字符。我用的系统是win7,在Eclipse下,一般默认的编码是GBK。
可不可以从一开始就将所有文字输入的编码按照自己的编码写入呢。
想不明白的几个问题:1,eclipse界面写入的时候,这些汉字,英文,数字,采用的是什么编码呢?
2,当将该编码写入到内存中,是否就是按照系统默认的编码(或者Eclipse默认的编码)进行的操作
3,一般Eclipse编码和操作系统默认编码是一致的么,这个可以自己设置么?
4,如果自己写一段代码,在自己电脑(GBK默认编码)上能够运行,结果有人电脑上编码为UTF-8,是不是就可能出现问题。
   貌似程序控制的,都是从内存中读取数据的时候,能够指定特定编码。
   而没有对输入的内容,进行编码指定,让他以特定的编码进入内存。

解决方案 »

  1.   

    如上面这段XML ,我从我的电脑上复制到CSDN的网站上。
    它依然是采取的什么编码呢。
    浏览器是与这段内容的字节数据打交道,还是对这些字符...
    有没有万能解码器。为什么编码不能够如同网络包一样,在前面弄一个头,告诉你该段是用什么编码解析的,JAVA就根据自己内置的编码表,自动对这些内容进行解析呢。
      

  2.   

    1.Eclipse中对于不同的文件类型可以设置不同的编码格式,你说的那些应该是java文件吧。都是你自己设置的。
    2.存入内存的只是字节流,不同的编码格式字节流长度不一样,UTF-8就是2个字节长度对应一个字符吧。读出来的肯定也是字节流,你需要以一定的规则来读取这个字节流,这个规则就是编码格式。
    3.设置方法:General->Workspace->Text File encoding
    4.你的代码是UTF-8写入的,直接把java文件拷到别人电脑(默认GBK读取的)上用,中文肯定乱码。可以把里面的内容拷贝出来复制过去,这样就不会出现问题。
    5.至于万能解码器,我觉得word不错,自动识别各种编码
      

  3.   

     System.out.println(Charset.defaultCharset());