input
String str=new String(input.getBytes,"UTF-8");

解决方案 »

  1.   

    先读取文件,然后
     Writer w = new OutputStreamWriter(new FileOutputStream(destFileName), "utf-8");
      

  2.   

    jsjszg   说得对
    new String(input.getBytes,"UTF-8");这个是会不正确的
      因为获取到的就不对 转码 导致转码也不会正确
      

  3.   

    一个移植到Java下的编码探测库
      

  4.   

    JAVA判断文件编码类型
    Java版文件编码转换工具
    你可以打开jar包查看源代码
      

  5.   

    java中判断字符编码的格式以及转码 
      

  6.   

    一个系统应该是定下来的,编码格式。从前台到后台保持统一即可。转换的方法就像1L和2L讲的,是这样的,但是如果项目的编码格式不是UTF-8,或者文件内容本身就不是UTF-8写进去的,强转为UTF-8的结果,还是乱码的。LZ可以试试在windows下读取一个txt文档(包含中文字符,如果是中文操作系统,默认会是GBK格式的),然后将读取的字符串转成UTF-8,然后控制台打印下看看,会是乱码的。
      

  7.   

    感谢大家的帮助我的问题 自己解决了  最终确定了 只有可能三种编码方式 我一一判断 转码成功了
    但是现在出现别一个问题因为转码是给Unix用的。。转码后在Unix上看到的每行都会有个"^M"
    我知道这个是Unix的换行结束符。。我想知道怎么避免我的程序转码后在Unix上查看正确并不会出现这个"^M"
     需要在我的原程序 上修改些什么
      

  8.   

    楼主可以贴出你解决方案的代码看看么。我现在也有个需求要读取windows下的文件保存在utf-8的数据库clob字段中
      

  9.   

    public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("F:\\test\\io\\1.txt")),"gbk"));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("F:\\test\\io\\2.txt")),"utf-8"));
    int ch =  0;
    while((ch=br.read()) != -1){
    bw.write(ch);
    }
    bw.flush();
    br.close();
    bw.close();
    }
    粗略写了下