Java 不同转义字符的扫描困难
首先,让我先说,我知道我不是唯一一个经历过这个问题的人,我花了最后几个小时研究如何解决这个问题。遗憾的是,我的扫描仪无法工作。我是java新手,所以我不理解一些答案在不同问题中的复杂解释 下面是一个概要: 我试图读取一个包含卡片转义字符的文件。下面是一个简短的版本:(4张不同卡片中的数字2和3) 这是格式:(西装)(面)(价值)。例如:Java 不同转义字符的扫描困难,java,escaping,java.util.scanner,java-io,Java,Escaping,Java.util.scanner,Java Io,首先,让我先说,我知道我不是唯一一个经历过这个问题的人,我花了最后几个小时研究如何解决这个问题。遗憾的是,我的扫描仪无法工作。我是java新手,所以我不理解一些答案在不同问题中的复杂解释 下面是一个概要: 我试图读取一个包含卡片转义字符的文件。下面是一个简短的版本:(4张不同卡片中的数字2和3) 这是格式:(西装)(面)(价值)。例如: \u2663=西服 3=面 3=值 这是我用来阅读的代码: File file = new File("Cards.txt"); try { Sca
- \u2663=西服
- 3=面
- 3=值
File file = new File("Cards.txt");
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] temp = line.split(",");
cards.add(new Card(temp[0], Integer.parseInt(temp[1])));
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
ArrayList卡片后面应该有52张卡片,包含一个名字(西装和脸)和一个值。当我尝试打印名称时,这是输出:
\u26633
虽然它应该是:
♣3
有谁能给我指点解决办法吗?我真的需要解决这个问题。我不想让你帮我写代码
提前感谢只需使用UTF-8作为字符编码直接将套装字符存储到您的文件
Cards.txt
,而不是仅由java理解的相应unicode字符格式,这样当从您的文件中读取套装字符时,它将被读取为字符串而不是对应的unicode字符
它的内容将是这样的:
♠2,2
...
另一种方法是使用unescape来取消unicode字符
然后,代码更改将是:
cards.add(new Card(StringEscapeUtils.unescapeJava(temp[0]), Integer.parseInt(temp[1])));
您必须使用UTF-8
编码保存文件,然后使用相同的编码读取文件
♥,一,
♥,二,
♥,三,
以下是代码片段:
BufferedReader buff = new BufferedReader(new InputStreamReader(
new FileInputStream("Cards.txt"), "UTF-8"));
String input = null;
while (null != (input = buff.readLine())) {
System.out.println(input);
String[] temp = input.split(",");
cards.add(new Card(temp[0], Integer.parseInt(temp[1])));
}
buff.close();
此外,您需要确保您的控制台已启用以支持UTF-8
。请查看答案以了解更多信息。非常感谢,我从未想过只将字符本身放入文本文件中,然后用UTF-8编码保存它!现在可以了。非常感谢你花时间回答我的问题。我已经找到了尼古拉斯·菲洛托的工作答案。
BufferedReader buff = new BufferedReader(new InputStreamReader(
new FileInputStream("Cards.txt"), "UTF-8"));
String input = null;
while (null != (input = buff.readLine())) {
System.out.println(input);
String[] temp = input.split(",");
cards.add(new Card(temp[0], Integer.parseInt(temp[1])));
}
buff.close();