【发布时间】:2019-04-04 14:35:19
【问题描述】:
我正在练习使用命令行在windows 10中运行java脚本。java脚本使用scanner(System.in)从文件中获取输入并打印它从文件中获取的字符串。powershell命令如下:
Get-Content source.txt | java test.TestPrint
source.txt文件内容如下:
:
a
2
!
TestPrint.java 文件如下:
package test;
import java.util.Scanner;
public class TestPrint {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
while(in.hasNextLine())
{
String str = in.nextLine();
if(str.equals("q")) break;
System.out.println( str );
}
}
}
然后奇怪的事情发生了。结果是
?:
a
2
!
你看,它在第一行的乞求中添加了问号。然后当我将source.txt文件第一行的字符从“:”更改为“a”时,结果是
a
a
2
!
它在第一行的乞求中添加了空格。
我测试了字符,发现规律:如果字符大于"?"在ASCII中,在ASCII中是63,那么它会添加空格,例如"A"(ASCII中的65)或@987654331 @(91 in ASCII).如果字符小于“?”,包括“?”本身,它会添加问号。
【问题讨论】:
-
PS:*source.txt* 是我想用粗体的时候,但是效果不好。没有语法错误。
-
你的
PS C:\> $OutputEncoding是什么?为什么选择使用用户系统当前“默认”编码的scanner构造函数? -
当你说“source.txt 是我想使用粗体的时候”你的意思是你只是想在问题中加粗 source.txt 但你是什么真正从命令行输入的是:Get-Content source.txt | java test.TestPrint
-
@CharlieWallace 是的,你是对的。这就是我的意思。我是个新手!我找到了编辑帖子的方法。而且似乎代码区域无法添加粗体格式。
-
@TomBlodget 抱歉,我无法发布
$OutpurtEncoding的全部结果,因为评论似乎无法使用代码块。我认为结果中的相关部分是:EncodingName : US-ASCIIWindowsCodePage : 1252
标签: java powershell