java读特殊文件的问题 我现在有一个文件,文件的编码方式为“windows-1252”,怎样能让读出来的数据不为乱码! 请大家别误以为我是问“读中文乱码的问题”,实际上,当文件的编码为“windows-1252”时,即使文件内容全为英文字母,在控制台读出来的依然是乱码!请高手解决! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主确保文件内数据是windows-1252编码格式的话建议楼主进行一下转码试试:String s = new String(your_str.getBytes("windows-1252"), "iso-8859-1");或者String s = new String(your_str.getBytes("windows-1252"), "utf-8");多试几次 楼主是否用Reader及其子类来读取的文件?如果是,那么,你在创建Reader对象的时候,可以设定读取的编码方式。也就是说,Reader有好多个同名的构造函数,选择代码指定编码方式的构造函数进行对象的创建。(注意,FileReader没有指定编码方式的构造函数)本例子:String fileName = "";//文件的路径名。Reader reader = new InputStreamReader(new FileInputStream(fileName),"windows-1252");BufferedReader br = new BufferedReader(reader);....这样,应该能够解决楼主的乱码问题。 当然,如果JVM上面没有对应编码(windows-1252)的编码器和解码器的话,可以尝试的从别的什么地方搞个编码器和解码器的类过来。这样,问题应该不大 BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(),"windows-1252"));这样读就可以。 public static String getStr_gb(String str) { String temp = null; try { String temp_p = str; if (temp_p == null) { return temp; } temp_p = temp_p.trim(); temp = new String(temp_p.getBytes("windows-1252"), "utf-8"); } catch (Exception e) { e.printStackTrace(); } return temp; } 多谢各位同行的热心回答,不过,你们的方法我都一一试过了,还是乱码!csdn太不厚道了,一不支持附件功能,二我在网络上搜索一个编码软件,却说有非法字符。哎,希望哪位同行给个邮件地址,我把文件发给你们,能把此文件读至ECLIPSE控制台不为乱码即可!本来我想结贴了,大家的答案也基本上就是这样的了,可我总觉得还是应该有方法的! eclipse控制台乱码?随便新建一个项目,项目右键->properties->text file encodeing,选中other,输入windows-1252。然后在你要运行的class里右键->run as->run configuration->Common->Console Encoding, 选择windows-1252。然后运行试试 如果那样的话,可能是你的eclipse没有设置好。。 run as->run configuration->Common->Console Encoding 未收到邮件,要不你发[email protected]也可以。 已发,非常感谢同行的支持! 由于这几周很忙,没有时间上CSDN,没有及时回复大家,万望容凉! 我也遇到这个问题了, 我只是想读取The world浏览器里的TheWorld.ini配置文件里的内容,读取的东西控制台打印出来的字母中间有小“口”字,汉字是乱码,怎么转都还是那样,求CSDN上的达人啊!!! 楼主给的那个文件,其编码是Unicode,而不是那个什么windows-1252编码。import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;/** * * * 该类创建于 2009-6-18 下午08:26:03 * @version 1.0.0 * @author 侯磊 */public class ReadFile { public static void main(String[] args) throws Exception { String fileName = "d:\\CHECK_RULE_COLL_VW.sql"; File file = new File(fileName); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"Unicode")) ; String line = null; while((line=br.readLine())!=null){ System.out.println(line); } }} 看来我是被网络上一个CPdetector检测文件编码给搞晕了,假如preferme 有兴趣,可以检测一下,确实是 windows-1252编码 兄弟!怎么我们遇到的问题一模一样哦,多谢23L 呵呵 CPdetector就是个×× 误导人 关于Timestamp的问题 模拟物理运动,懂得进 最简单的全文检索 实现方式 哇哈哈! 欢迎拍砖!! 紧急求助,我想先运行5个线程,直到它们结束再运行另外五个线程,怎么实现呢?谢谢啊 问一个关于properties文件的路径的问题 发布jtotem2.0图形工具 急-----高分求算法 java打印文件时,如何解决打出的乱码? 急,Tomcat中保存破折号出现乱码, 如何解决? 请教:我的mysql换了高性能服务器后为什么多表查询性能反而下降了n倍? 想实现一个数据采集程序,要实现两个功能,一个是定时采集,另一个是定期采集 求助 关于对象数组的排序问题
建议楼主进行一下转码试试:
String s = new String(your_str.getBytes("windows-1252"), "iso-8859-1");
或者
String s = new String(your_str.getBytes("windows-1252"), "utf-8");
多试几次
如果是,那么,你在创建Reader对象的时候,可以设定读取的编码方式。
也就是说,Reader有好多个同名的构造函数,选择代码指定编码方式的构造函数进行对象的创建。
(注意,FileReader没有指定编码方式的构造函数)
本例子:
String fileName = "";//文件的路径名。
Reader reader = new InputStreamReader(new FileInputStream(fileName),"windows-1252");
BufferedReader br = new BufferedReader(reader);
....
这样,应该能够解决楼主的乱码问题。
可以尝试的从别的什么地方搞个编码器和解码器的类过来。
这样,问题应该不大
public static String getStr_gb(String str) {
String temp = null;
try {
String temp_p = str;
if (temp_p == null) {
return temp;
}
temp_p = temp_p.trim();
temp = new String(temp_p.getBytes("windows-1252"), "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
return temp;
}
csdn太不厚道了,一不支持附件功能,二我在网络上搜索一个编码软件,却说有非法字符。哎,希望哪位同行给个邮件地址,我把文件发给你们,能把此文件读至ECLIPSE控制台不为乱码即可!本来我想结贴了,大家的答案也基本上就是这样的了,可我总觉得还是应该有方法的!
随便新建一个项目,项目右键->properties->text file encodeing,选中other,输入windows-1252。
然后在你要运行的class里右键->run as->run configuration->Common->Console Encoding, 选择windows-1252。
然后运行试试
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;/**
*
*
* 该类创建于 2009-6-18 下午08:26:03
* @version 1.0.0
* @author 侯磊
*/
public class ReadFile { public static void main(String[] args) throws Exception {
String fileName = "d:\\CHECK_RULE_COLL_VW.sql";
File file = new File(fileName);
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"Unicode")) ;
String line = null;
while((line=br.readLine())!=null){
System.out.println(line);
}
}}
看来我是被网络上一个CPdetector检测文件编码给搞晕了,假如preferme 有兴趣,可以检测一下,确实是 windows-1252编码