当前位置: 首页 > 面试题库 >

Java,Unicode,UTF-8和Windows命令提示符

牧甫
2023-03-14
问题内容

我有一个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");

我还按顺序将命令提示符字体更改为Lucida Console,并将字符编码更改为UTF-8 chcp 65001

现在,当我运行时java -jar Read.jar file.txt,提示符会把它洒出来。

áéí
ñóú
[]óú
[]

但是,如果我运行type file.txt,提示符将正确显示文件的内容。

áéí
ñóú

我尝试过保存带有和不带有BOM的文件,但这并没有什么不同。(UTF-8甚至不需要BOM,因为它缺乏字节序,对吗?)我尝试使用进行编译javac -encoding utf8 *.java,但同样的事情也会发生。

我现在没主意了。有人愿意帮助吗?


问题答案:

代码页65001损坏。在65001下运行时,MS C运行时stdio函数返回的字节读取和写入的计数不正确,这会导致类似这样的奇怪行为。

它不是可修复的-您不能从使用C stdlib字节I / O函数(包括Java)的应用程序中可靠地使用Windows控制台进行Unicode I /
O。您可以通过调用Win32
API函数WriteConsoleW来破解它,以将Unicode内容直接发送到控制台,但是随后您就不得不担心检测stdout何时实际上是一个控制台(未重定向到文件)。

这是一个长期的祸患,MS对修复没有兴趣。



 类似资料:
  • 2. Unicode和UTF-8 为了统一全世界各国语言文字和专业领域符号(例如数学符号、乐谱符号)的编码,ISO制定了ISO 10646标准,也称为UCS(Universal Character Set)。UCS编码的长度是31位,可以表示231个字符。如果两个字符编码的高位相同,只有低16位不同,则它们属于一个平面(Plane),所以一个平面由216个字符组成。目前常用的大部分字符都位于第一个

  • 问题内容: 我们尝试在Windows上使用Java和UTF-8。该应用程序在控制台上写入日志,我们希望对日志使用UTF-8,因为我们的应用程序具有国际化的日志。 可以配置JVM,使其使用JVM的参数生成UTF-8 。它工作正常,但Windows控制台上的输出出现乱码。 然后,我们可以将控制台的代码页设置为65001(),但是在这种情况下,文件将无法工作。这意味着当我们尝试通过脚本(名为start.

  • 我试图用命令提示符用java编译一个程序。我的程序在eclipse中运行良好,但是,当我试图在命令提示符中编译它时,我收到了一条错误消息。任何帮助和指导都将不胜感激。 triton.java:20:错误:不能dind符号循环Loop=new Loop(); 符号:类循环位置:类Triton trion.java:20:错误:找不到符号循环循环=新循环();sybmol:类循环位置:类Triton

  • 我正在尝试通过命令行在Windows 10上安装Weblogic server,以管理员身份运行: 我得到下面的错误,是什么导致的? c:\Oracle\u weblogic\fmw\u 12.2.1.3.0\u wls\u quick。罐子jar启动器日志文件为C:\Users\Govind\AppData\Local\Temp\OraInstall2017-12-22_12-11-33AM\l

  • 问题内容: 我试图弄清楚我应该对各种类型的数据使用哪种排序规则。我要存储的内容的100%是用户提交的。 我的理解是,我应该使用UTF-8 General CI(不区分大小写),而不是UTF-8 Binary。但是,我找不到UTF-8通用CI和UTF-8 Unicode CI之间的明显区别。 我应该在UTF-8 General或UTF-8 Unicode CI列中存储用户提交的内容吗? UTF-8

  • 本文向大家介绍ascii、unicode、utf-8、gbk 区别相关面试题,主要包含被问及ascii、unicode、utf-8、gbk 区别时的应答技巧和注意事项,需要的朋友参考一下