425*_*esp 13 java windows unicode utf-8 command-prompt
我有一个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,但同样的事情发生了.
我现在没有想法了.有人在乎帮忙吗?
bob*_*nce 14
代码页65001已损坏.MS C运行时stdio函数返回在65001下运行时读取和写入的字节计数不准确,这会导致像这样的奇怪行为.
它不可修复 - 您无法从使用C stdlib字节I/O函数(包括Java)的应用程序中可靠地使用Windows控制台进行Unicode I/O. 您可以通过调用Win32 API函数WriteConsoleW直接将Unicode内容直接发送到控制台来破解它,但是您必须担心检测stdout实际上何时是控制台(未重定向到文件).
这是一个长期存在的祸患,MS对此没有兴趣解决问题.
| 归档时间: |
|
| 查看次数: |
4030 次 |
| 最近记录: |