我必须将日语命令行参数传递给Java main方法.如果我在命令行窗口中键入Unicode字符,它会显示"?????" 这没关系,但传递给java程序的值也是'?????'.如何获取命令窗口传递的参数的正确值?下面是示例程序,它将命令行参数提供的值写入文件.
public static void main(String[] args) {
String input = args[0];
try {
String filePath = "C:/Temp/abc.txt";
File file = new File(filePath);
OutputStream out = new FileOutputStream(file);
byte buf[] = new byte[1024];
int len;
InputStream is = new ByteArrayInputStream(input.getBytes());
while ((len = is.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个jar文件应该读取UTF-8编码的文件 - 我在Windows下的文本编辑器中写入 - 并将字符显示在屏幕上.在OS X和Linux下,它可以完美运行.我在Windows下工作时遇到了一些麻烦...我已经定义了一个像这样的读者和作者:
FileInputStream file = new FileInputStream(args[0]);
InputStreamReader reader = new InputStreamReader(file, "UTF8");
PrintStream writer = new PrintStream(System.out, true, "UTF8");
Run Code Online (Sandbox Code Playgroud)
我也按顺序将命令提示字体更改为Lucida Console和UTF-8的字符编码chcp 65001.
现在,当我跑步时java -jar Read.jar file.txt,提示挥霍了.
áéí
ñóú
[]óú
[]
Run Code Online (Sandbox Code Playgroud)
但是,如果我运行type file.txt,则提示正确显示文件的内容.
áéí
ñóú
Run Code Online (Sandbox Code Playgroud)
我尝试使用和不使用BOM保存我的文件,但这没有什么区别.(UTF-8甚至不需要BOM,因为它缺乏字节序,对吗?)我尝试过编译javac -encoding utf8 *.java,但同样的事情发生了.
我现在没有想法了.有人在乎帮忙吗?