昨天大概因为另存时改编码了,用记事本写完东西保存时所有中文全部变成\uxxxx格式了
并且只要一保存文档开就会添个\uFEFF
想写段代码给它恢复回中文,求相关方法 求指导 

解决方案 »

  1.   

    使用jdk提供的工具 native2ascii 
      

  2.   

    小日本在ECLIPSE下有个propertitesEditer的插件,在propertites里写中文是会把中文转换成ascii编码。是不是你的环境有这个插件啊另,不知道你保存的是什么文件。。
      

  3.   

    谢谢昂
    很好很强大
    源文件前面几行:\uFEFFname22233
    comljsfl
    Altova XMLSpy 2011 Enterprise\u662FXML\u5F00\u53D1\u73AF\u5883\u7684\u884C\u4E1A\u6807\u51C6\uFF0C\u5B83\u63D0\u4F9B\u9876\u7EA7XML\u7F16\u8F91\u5668,
     \u6A21\u5F0F\u8BBE\u8BA1\u5668, \u7F16\u7801\u4EA7\u751F\u5668, \u8F6C\u6362\u5668, \u8C03\u8BD5\u5668, 
    \u6548\u80FD\u8C03\u8BD5\u5668, \u7ED9XSLT, XQuery, WSDL, SOAP, DBs, Visual Studio, Eclipse\u548C\u66F4\u591A\u7684\u652F\u6301.结果:C:\Users\hp>native2ascii -reverse C:\Users\hp\Desktop\Start\1Temporary\1_二单元\
    HTML\1009.txt
    \uFEFFname22233
    comljsfl
    Altova XMLSpy 2011 Enterprise是XML开发环境的行业标准,它提供顶级XML编辑器,
     模式设计器, 编码产生器, 转换器, 调试器,
    效能调试器, 给XSLT, XQuery, WSDL, SOAP, DBs, Visual Studio, Eclipse和更多的支持.
      

  4.   

    先查找所有的\u替换为""
    然后读出字符串,用下面的工具转换为中文,再写入   试试
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;import javax.swing.JFileChooser;
    import javax.swing.JOptionPane;public class TestIO {
        
        public static void main(String[] args)throws IOException {   

            String src = fileToString();
    byte[] bytes = new byte[src.length() / 2];
            for (int i = 0; i < bytes.length; i++) {
                bytes[i] = (byte)Integer.parseInt(src.substring(2 * i , 2 * i + 2),16);
            }
            String s = null;
    try {
        s = new String(bytes,"utf-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
            stringToFile(s);

        }
        
        
            // //////////////////////////////////////////////////////////////////////////////////////////////////////      public static void stringToFile(String sourceString) {
       PrintWriter pw = null;
       try {
           JFileChooser jFileChooser = new JFileChooser();
           javax.swing.filechooser.FileFilter fileFilter = new javax.swing.filechooser.FileFilter() {
       public boolean accept(File file) {
           if (file.isDirectory())
       return true;
           String fileName = file.getName();
           if (fileName.toUpperCase().endsWith("TXT"))
       return true;
           return false;
       }   public String getDescription() {
           return "保存为文本文件";
       }
           };// 建立一个过滤文件类型的过滤器(对话框中正确显示文件),是否启用过滤器决定于下面两句话
           // jFileChooser.addChoosableFileFilter(fileFilter);
           // jFileChooser.setFileFilter(fileFilter);
           int returnValue = jFileChooser.showSaveDialog(null);
           File fileOfSave = null;// 保存文件句柄
           if (returnValue == javax.swing.JFileChooser.APPROVE_OPTION) {
       fileOfSave = jFileChooser.getSelectedFile();// 获得文件句柄,文件是否存在还未知
           }
           if(fileOfSave == null) return;
           String fileNameOfSave = fileOfSave.getName();// 返回输入的文件名
           // 检查文件名是否符合要求,这一步暂时省略......................................
           if (fileOfSave.exists() && !isAgree("该文件已经存在,确定要覆盖吗?"))
       return;
           else
       fileOfSave.createNewFile();
           pw = new PrintWriter(fileOfSave);
           pw.print(sourceString);
           pw.flush();
       } catch (IOException e) {
           throw new RuntimeException(e);
       } finally {
           if (pw != null)
       pw.close();
       }
          }      // //////////////////////////////////////////////////////////////////////////////////////////////////////
          public static String fileToString() {
       StringBuilder sb = new StringBuilder();
       JFileChooser jFileChooser = new JFileChooser();
       javax.swing.filechooser.FileFilter fileFilter = new javax.swing.filechooser.FileFilter() {
           public boolean accept(File file) {
       if (file.isDirectory())
           return true;
       String fileName = file.getName();
       if (fileName.toUpperCase().endsWith("TXT"))
           return true;
       return false;
           }       public String getDescription() {
       return "读取文本文件";
           }
       };
       // 建立一个过滤文件类型的过滤器(对话框中正确显示文件),是否启用过滤器决定于下面两句话
       // jFileChooser.addChoosableFileFilter(fileFilter);
       // jFileChooser.setFileFilter(fileFilter);
       int returnValue = jFileChooser.showOpenDialog(null);
       if (returnValue == JFileChooser.APPROVE_OPTION) {
           File file = jFileChooser.getSelectedFile();
           if (!file.exists()) {
       prompt("文件不存在");
       return null;
           }
           // 检查文件名是否符合要求,这一步暂时省略......................................
           BufferedReader br = null;
           try {
       br = new BufferedReader(new FileReader(file));   String string;
       while ((string = br.readLine()) != null) {
           sb.append(string);
           sb.append("\r\n");
       }
           } catch (IOException e) {
       throw new RuntimeException(e);
           } finally {
       if (br != null)
           try {
       br.close();
           } catch (IOException e) {
       throw new RuntimeException(e);
           }
           }
       }
       return sb.toString();
          }      public static boolean isAgree(String hint) {
       int returnValue = javax.swing.JOptionPane.showConfirmDialog(null, hint);
       if (returnValue == javax.swing.JOptionPane.YES_OPTION)
           return true;
       else
           return false;
          }      public static int prompt(String promptMessage) {
       return JOptionPane.showConfirmDialog(null, promptMessage, "友情提示",
       JOptionPane.WARNING_MESSAGE);
          }
          // ///////////////////////////////////////////////////////////////////////////////////////////////////////
           

        }
        
      

  5.   

    bytes[i] = (byte)Integer.parseInt(src.substring(2 * i , 2 * i + 2),16);只把2位16进制数字换成ASCII对应的字符了,你默认都只是两位的ASCII值了