我在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上运行之后):
????????????
答案 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)如果可以,请始终使用您自己的字符编码,这是将字节转换为字符串的更准确和精确的方法。