并且只要一保存文档开就会添个\uFEFF
想写段代码给它恢复回中文,求相关方法 求指导
8 个解决方案
#1
使用jdk提供的工具 native2ascii
#2
小日本在ECLIPSE下有个propertitesEditer的插件,在propertites里写中文是会把中文转换成ascii编码。是不是你的环境有这个插件啊。。。
另,不知道你保存的是什么文件。。
#3
\uFEFF 这个是 BOM
#4
native2ascii应该可以解决的把
#5
谢谢昂
很好很强大
源文件前面几行:
结果:
很好很强大
源文件前面几行:
\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和更多的支持.
#6
先查找
所有的\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);
}
// ///////////////////////////////////////////////////////////////////////////////////////////////////////
}
#7
不行 我以为你的是全部中文
#8
bytes[i] = (byte)Integer.parseInt(src.substring(2 * i , 2 * i + 2),16);
只把2位16进制数字换成ASCII对应的字符了,你默认都只是两位的ASCII值了
#1
使用jdk提供的工具 native2ascii
#2
小日本在ECLIPSE下有个propertitesEditer的插件,在propertites里写中文是会把中文转换成ascii编码。是不是你的环境有这个插件啊。。。
另,不知道你保存的是什么文件。。
#3
\uFEFF 这个是 BOM
#4
native2ascii应该可以解决的把
#5
谢谢昂
很好很强大
源文件前面几行:
结果:
很好很强大
源文件前面几行:
\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和更多的支持.
#6
先查找
所有的\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);
}
// ///////////////////////////////////////////////////////////////////////////////////////////////////////
}
#7
不行 我以为你的是全部中文
#8
bytes[i] = (byte)Integer.parseInt(src.substring(2 * i , 2 * i + 2),16);
只把2位16进制数字换成ASCII对应的字符了,你默认都只是两位的ASCII值了