Java扫描器在读取Unicode文件时错过了第一行

时间:2018-10-31 04:05:21

标签: java unicode java.util.scanner

我正在尝试使用Java Scanner从图块读取unicode文本。但是第一行的读数为空白,下一行的读数正确。如果我在文件的第一行中添加英文文本,它将正确读取。谁能解释为什么会这样?

idsale int primary key  
idprod int foreign key  
quantity int  

下面是input.txt内容

create procedure update_stock()  
begin  
update products  
inner join sales on products.idprod = sales.idprod  
set products.stock = products.stock-sales.quantity;  
end

create procedure add_sale(in s_id int, in p_id int, in qua int)  
begin  
insert into sales values(s_id, p_id, qua);  
call update_stock ();  
end

这是执行以上代码的输出          enter image description here

我进行了更多研究,发现它在第一行的开头读取65279个字符,这就是为什么第一行未显示的原因。为什么会这样。

顺便说一句,我没有在输入文件的第一行添加英文文本的阅读问题。

1 个答案:

答案 0 :(得分:0)

我尝试运行相同的代码,并将文件内容(粘贴)复制到本地目录中的文件中,这就是程序输出的结果:

নমঃ নমঃ নামো   বাঙালাদেশ মম
চির মনোরম       চির মধুর
বৃকে নিরবধি       বহে শত নদী
চরণে জলধির      বাজে নূপুর।।
গ্রীষ্মে নাচে বামা   কালবোশেখি ঝড়ে
সহসা বরষাতে    কাঁদিয়া ভেঙ্গে পড়ে
শরতে হেসে চলে   শেফালিকা-তলে

第一行显示正确,与您在帖子中显示的示例不同。我还尝试了常规的英文字符,它显示出相同的行为。

文件的外观如下:

/tmp> cat input1.txt 
নমঃ নমঃ নামো   বাঙালাদেশ মম
চির মনোরম       চির মধুর
বৃকে নিরবধি       বহে শত নদী
চরণে জলধির      বাজে নূপুর।।
গ্রীষ্মে নাচে বামা   কালবোশেখি ঝড়ে
সহসা বরষাতে    কাঁদিয়া ভেঙ্গে পড়ে
শরতে হেসে চলে   শেফালিকা-তলে

/tmp> wc -c input1.txt
     518 input1.txt

如您所见,文件显示的内容与输出完全相同,wc -c计算的字符总数仅为518,而不是您在帖子中提到的65K +。您可以重试使用您实际粘贴在问题中的文本吗?