首页 > 解决方案 > 表格行字符替换为“?” mvn包后

问题描述

下面是一段在控制台中创建表的代码:


System.out.format( "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓%n" );
System.out.format( "┃                    Party                 ┃%n" );
System.out.format( "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛%n" );
String align = "┃ %-30s ┃%n";

当我从 IDE 执行它时,输出如下:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                    Party                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

但是在我用 打包类之后mvn package,这些行显示为?输出:

????????????????????????????????????????????
?                    Party                 ?
????????????????????????????????????????????

有什么办法可以防止这种情况显示带有问号的表格?我知道使用+-会解决,但我希望它显示出来。

标签: javacharacter-encodingstring-formatting

解决方案


这是一个编码问题。Java 编译器没有使用您期望的字符集读取源代码,或者您运行代码的终端不支持呈现您正在输出的字符。

最简单的最有可能创建一个带有麻烦字符的字符串,然后遍历该字符串并打印出每个字符的 Unicode 值。如果是 63 - 问号 - 然后查看源代码的编码。如果这是您所期望的,请查看终端的代码页/编码。

如果您可以在调试器下运行程序,则不必更改程序,只需在 System.out.format 处设置断点,然后检查传入的字符串。


推荐阅读