程序在Netbeans上运行但不在CMD上运行

时间:2015-12-13 17:33:29

标签: java netbeans

我在java中编写了一个编码程序。它在Netbeans和BlueJ上运行良好,但是当我在命令提示符下运行它时,它无法正常工作。

这是我的代码:

import java.io.*;
class encoder
{
    String ff="",ff2="",key="";
    encoder(String ff,String ff2,String key)
    {
        this.ff=ff;
        this.ff2=ff2;
        this.key=key;
        Encode();
    }
    public static void main(String arg[])
    {
        new encoder("C:\\Users\\Arpit Jindal\\Desktop\\arpit.txt","C:\\Users\\Arpit Jindal\\Desktop\\encoded.txt","aaa");
    }
    void Encode()
    {
        try
        {
            File f=new File(ff);
            FileReader fis=new FileReader(f);
            BufferedReader br=new BufferedReader(fis);
            File f2=new File(ff2);
            f2.createNewFile();
            FileWriter fw=new FileWriter(f2);
            BufferedWriter bw=new BufferedWriter(fw);
            int r=0,ln=key.length(),i=0;
            while((r=br.read())!=-1)
            {
                r=r+key.charAt(i)*key.charAt(i)-key.charAt(i);
                r+=5;
                char ch=(char)r;
                i++;
                if(i==(ln-1))
                    i=0;
                bw.write(""+ch);
            }
            bw.close();
            br.close();
        }
        catch(Exception e)
        {}
    }
}

arpit.txt:

fkjbskjbkwgt

encoded.txt(在Netbeans上运行之后):

ⓋⓐⓏⓇⓘⓐⓏⓇⓐⓜⓌⓙ

encoded.txt(在CMD上运行之后):

????????????

1 个答案:

答案 0 :(得分:0)

由于charset编码,这种情况正在发生,您需要为JVM设置编码系统。 您可以将环境变量JAVA_TOOL_OPTIONS设置为-Dfile.encoding =“UTF-8”或任何其他字符编码,它将在您的Windows机器中启动任何JVM启动。 JVM还将在控制台上打印“Picked up JAVA_TOOL_OPTIONS:-Dfile.encoding = UTF8”,表明它已经选择了JAVA_TOOS_OPTIONS。

或在您的程序中,您可以设置为,

System.setProperty("file.encoding", "UTF-8");

需要注意的重点:

1)一旦JVM启动,JVM就会缓存默认字符编码的值,因此InputStreamReader和其他核心Java类的默认构造函数也是如此。所以调用System.setProperty(“file.encoding”,“UTF-8”)可能没有预期效果。

2)如果可以,请始终使用您自己的字符编码,这是将字节转换为字符串的更准确和精确的方法。