我在.java文件中有一个字符串"Përshëndetje botë!"
,我正在尝试使用System.out.println()
打印它。该文件采用ISO-8859-1编码。在cmd
我做
chcp 28591
将编码更改为ISO-8859-1(每the list)。
然后我使用
编译.java文件javac -encoding ISO-8859-1 C:\...\Hello.java
并使用
运行它java -Dfile.encoding=ISO-8859-1 packagename.Hello
在这种情况下,ë
将替换为空格。我也试过
java -Dfile.encoding=ISO88591 packagename.Hello
并且ë
被错误的外国符号替换。
我如何让它运行?
答案 0 :(得分:1)
根据OP's comment,实际问题是字体cmd
使用的字体没有相关的符号。
我发布这个作为答案,因为我想说的是评论太长了:)。
首先,请edit your question添加minimal example打印代码。例如,如果您可以编写一个单独的Java程序,除了打印消息之外什么都不做,那么调试起来会容易得多。 (也许packagename.Hello
就是这样一个例子,但我无法说出来。)
其次,请尝试以下操作,并edit your question包含每个步骤的结果。
检查源文件中的实际字节以确认其编码,然后编辑您的问题以包含该信息。您可以使用例如the FileFormat.info hex dumper(我不隶属于它)。例如,以下是您的字符串的输出,粘贴到UTF-8文本文件中:
file name: foo.txt
mime type:
0000-0010: 50 c3 ab 72-73 68 c3 ab-6e 64 65 74-6a 65 20 62 P..rsh.. ndetje.b
0000-0017: 6f 74 c3 ab-21 0d 0a ot..!..
^^ ^^ ^^
注意,在^^
标记处,UTF-8中的ë
为0xc3 0xab
。
相比之下,在ISO 8859-1(又名" latin1"在vim中),相同的文字是:
file name: foo.txt
mime type:
0000-0010: 50 eb 72 73-68 eb 6e 64-65 74 6a 65-20 62 6f 74 P.rsh.nd etje.bot
0000-0014: eb 21 0d 0a .!..
^^ ^
请注意,ë
现在是0xeb
。
尝试以java packagename.Hello
,运行您的命令,不用任何-D
选项。在您阅读的answer中,-D
的{{1}}选项不是必需的。
尝试代码页java
,与earlier question一样。