我正在使用Java Scanner
。
我有一个.txt
文件,其中保存了此文字。
PriceDB = {
["profileKeys"] = {
["Name - 回音山"] = "Name - 回音山",
},
["char"] = {
["Name - 回音山"] = {
["CurrentValue"] = "一口价:|cffffffff70,197|TInterface\\MoneyFrame\\UI-GoldIcon:0:0:2:0|t|r",
},
},
}
我要做的就是用扫描程序打开这个文件,从文件中提取"CurrentValue"
70,197
并将其保存为int。但是,每次打开文件时,它都不会读取一行,并以NoSuchElementException
作为消息抛出"No line found"
。在摆弄文件并逐一删除一些汉字后,我把它缩小到这个小家伙口。出于某种原因,扫描仪不喜欢这个角色。我只是想知道是否有一些我需要更改的编码设置,或者我是否会使用BufferedReader或者什么......我真的不确定发生了什么,除了我猜有编码错误。那么这里发生了什么?
编辑:这是我的扫描仪的初始化。
Scanner scanner;
if (region.equals("US")) {
scanner = new Scanner(new File("C:\\Program Files\\World of Warcraft\\WTF\\Account\\313023286#1\\SavedVariables\\WoWTokenPrice.lua"));
} else if (region.equals("EU")) {
scanner = new Scanner(new File("C:\\Program Files\\World of Warcraft\\WTF\\Account\\313495228#1\\SavedVariables\\WoWTokenPrice.lua"));
} else if (region.equals("China")) {
File file = new File("C:\\Program Files\\World of Warcraft\\WTF\\Account\\232241227#1\\SavedVariables\\WoWTokenPrice.lua");
System.out.println(file.exists());
scanner = new Scanner(file);
} else {
System.exit(1);
break;
}
我只是原样复制它。 region ==“中国”
答案 0 :(得分:5)
创建Scanner时,您必须指定正确的编码。构造函数:
public Scanner(InputStream source, String charsetName)
构造一个新的Scanner,它生成从指定输入流扫描的值。使用指定的字符集将流中的字节转换为字符。
Find here your charset,我猜UTF-16
但不是外国专家:)。
Scanner scanner = new Scanner(is, StandardCharsets.UTF-16.toString());