Table 行字符正在替换为“?”在 mvn 包之后
Table line characters are replacing with "?" after mvn package
下面是在控制台中创建 table 的一段代码:
System.out.format( "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓%n" );
System.out.format( "┃ Party ┃%n" );
System.out.format( "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛%n" );
String align = "┃ %-30s ┃%n";
当我从 IDE 执行它时,输出如下:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Party ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
但是在我用 mvn package
打包 类 之后,这些行在输出中显示为 ?
:
????????????????????????????????????????????
? Party ?
????????????????????????????????????????????
有什么方法可以防止 table 显示带问号?我知道使用 +
或 -
会解决问题,但我希望它能像那样显示。
这是一个编码问题。 Java 编译器未使用您期望的字符集读取源代码,或者您 运行 您的代码所在的终端不支持呈现您正在输出的字符。
最简单的是最有可能用麻烦的字符创建一个String,然后遍历该字符串并打印出每个字符的Unicode值。如果是 63 - 问号 - 然后查看源代码的编码。如果它是您所期望的,那么请查看您终端的代码 page/encoding。
如果您可以 运行 在调试器下运行您的程序,则不必更改程序,只需在 System.out.format 处设置一个断点,然后检查传入的字符串。
下面是在控制台中创建 table 的一段代码:
System.out.format( "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓%n" );
System.out.format( "┃ Party ┃%n" );
System.out.format( "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛%n" );
String align = "┃ %-30s ┃%n";
当我从 IDE 执行它时,输出如下:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Party ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
但是在我用 mvn package
打包 类 之后,这些行在输出中显示为 ?
:
????????????????????????????????????????????
? Party ?
????????????????????????????????????????????
有什么方法可以防止 table 显示带问号?我知道使用 +
或 -
会解决问题,但我希望它能像那样显示。
这是一个编码问题。 Java 编译器未使用您期望的字符集读取源代码,或者您 运行 您的代码所在的终端不支持呈现您正在输出的字符。
最简单的是最有可能用麻烦的字符创建一个String,然后遍历该字符串并打印出每个字符的Unicode值。如果是 63 - 问号 - 然后查看源代码的编码。如果它是您所期望的,那么请查看您终端的代码 page/encoding。
如果您可以 运行 在调试器下运行您的程序,则不必更改程序,只需在 System.out.format 处设置一个断点,然后检查传入的字符串。