public class ConvertFromAnsiToUtf8 {
private static final char BYTE_ORDER_MARK = '\uFEFF';
private static final String ANSI_CODE = "windows-1252";
private static final String UTF_CODE = "UTF8";
private static final Charset ANSI_CHARSET = Charset.forName(ANSI_CODE);
public static void main(String[] args) {
List<File> fileList;
File inputFolder = new File(args[0]);
if (!inputFolder.isDirectory()) {
return;
}
File parentDir = new File(inputFolder.getParent() + "\\"
+ inputFolder.getName() + "_converted");
if (parentDir.exists()) {
return;
}
if (parentDir.mkdir()) {
} else {
return;
}
fileList = new ArrayList<File>();
for (final File fileEntry : inputFolder.listFiles()) {
fileList.add(fileEntry);
}
InputStream in;
Reader reader = null;
Writer writer = null;
try {
for (File file : fileList) {
in = new FileInputStream(file.getAbsoluteFile());
reader = new InputStreamReader(in, ANSI_CHARSET);
OutputStream out = new FileOutputStream(
parentDir.getAbsoluteFile() + "\\"
+ file.getName());
writer = new OutputStreamWriter(out, UTF_CODE);
writer.write(BYTE_ORDER_MARK);
char[] buffer = new char[10];
int read;
while ((read = reader.read(buffer)) != -1) {
System.out.println(read);
writer.write(buffer, 0, read);
}
}
reader.close();
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
任何指针都将有所帮助。
谢谢,阿希什
发布的代码正确地从windows-1252转码到UTF-8。
记事本++消息令人困惑,因为“ANSI as UTF-8”没有明显的含义;它似乎是记事本++中的一个开放缺陷。我认为Notepad++意味着没有BOM的UTF-8(请参见编码菜单)
Microsoft Access作为一个Windows程序,可能希望UTF-8文件以字节顺序标记(BOM)开始。
import java.io.*;
import java.nio.charset.*;
public class Ansi1252ToUtf8 {
private static final char BYTE_ORDER_MARK = '\uFEFF';
public static void main(String[] args) throws IOException {
Charset windows1252 = Charset.forName("windows-1252");
try (InputStream in = new FileInputStream(args[0]);
Reader reader = new InputStreamReader(in, windows1252);
OutputStream out = new FileOutputStream(args[1]);
Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8)) {
writer.write(BYTE_ORDER_MARK);
char[] buffer = new char[1024];
int read;
while ((read = reader.read(buffer)) != -1) {
writer.write(buffer, 0, read);
}
}
}
}
我尝试用我的JAVA servlets将WE8MSWIN1252编码中的一些文本转换为UTF8。 最好的问候。 R.
建议选择 safe 方式命名文件名。 经测试,以下修改源码以适应 utf-8 命名方式兼容性也不好。 // 修改\inc\pageutils.php中utf8_encodeFN、utf8_decodeFN两个函数 function utf8_encodeFN($file,$safe=true){ global $conf; //if($conf['fnencode'] == '
我有一些用ANSI编码的php脚本文件。现在我已经将我的网站转换为html5,我需要UTF-8中的所有内容,以便这些文件中的重音可以正确显示,而无需通过iconv()进行任何php转换。我使用记事本++在UTF-8上设置脚本编码并保存文件,大多数都很好,重音显示正确,只有主脚本现在阻止了一切,服务器只返回一个白页,没有任何错误消息,即使使用! 当我在记事本++中将编码更改为ANSI并保存文件而不做
问题内容: 请给我帮助。我正在使用一个Java应用程序,它将数据从txt文件转换为数据库,问题是该文件具有ANSI编码,由于它来自我的应用程序之外,并且当我将数据写到该文件时,我无法更改。数据库我有一些“ ???” 内。我的问题是,如何将从文件中读取的数据从ANSI转换为可以处理这些奇怪符号的UTF-8。我试过了Byte []到String的转换,但是没有用。 问题答案: 使用像这样打开一个解码阅
问题内容: 我有一个包含一些非utf8特征的文件(例如“ ISO-8859-1”),因此我想将该文件(或读取的)转换为UTF8编码,我该怎么办? 代码是这样的: 编辑:放置一个编码示例 问题答案: 在那里,文本已解码。您可以通过simmetric Writer / OutputStream方法使用您喜欢的编码(例如UTF-8)来编写它。
问题内容: 我正在尝试在Windows 8.1上使用node.js(0.10.29)从磁盘加载UTF8 json文件。以下是运行的代码: 运行此命令时出现以下错误: 现在,当我将文件编码(使用Notepad ++)更改为ANSI时,它可以正常工作。 任何想法为什么会这样?在Windows上进行开发的同时,最终解决方案将部署到各种非Windows服务器上,例如,如果将ANSI文件部署到Linux,我