读TXT文件带BOM问题

从文件中读取数据对用户名、密码进行验证,一开始出现从文件中读取的数据带BOM,与输入的数据长度不一致,将文件转为不带BOM(方法见utf-8 BOM批量转换工具)后用equals比较还是不相同,最后只能自己写了个比较的函数

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.io.BufferedReader"%>
<%@page import="java.io.FileReader"%>
<%@page import="java.io.Reader"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>check</title>
</head>
<body>
<%!
boolean eq(String s1,String s2){
    boolean b = true;    
    if(s1.length()==s2.length()){        
        for(int i=0;i<s2.length();i++){                        
            if(s1.charAt(i)!=s2.charAt(i)){
                b = false;
                break;
            }
        }
    }else{
        b=false;
    }
        return b;
}
%>
<%
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    boolean flag=false;
    String username=request.getParameter("username");
    String password=request.getParameter("password");         
     try {
        String path =  getServletContext().getRealPath("/student.txt");
        Reader in = new FileReader(path);
        BufferedReader f = new BufferedReader(in);        
        String line="";
        line = f.readLine();       
        while(line!=null) {
            String[] ss = line.split(" ");
            
            //String un = new String(ss[0].getBytes("UTF-8"),"UTF-8");
            //String pw = new String(ss[1].getBytes("UTF-8"),"UTF-8"); 
            //if("0111".equals(un)&&"11".equals(pw)){
            //if("0111".equals(username)&&"11".equals(password)){
            //if(un.equals(username)&&pw.equals(password)){
            //if(username.equals(ss[0])&&password.equals(ss[1])){
            //if(username.compareTo(ss[0])==0){

//注释掉的是试过的方法都不行,现在从文件中读出的数据与输入的数据长度是一致的,

//不知道是不是编码问题,始终比较结果为不等
            if(eq(username,ss[0])&&eq(password,ss[1])){
                flag = true;
                break;
            }           
            line  = f.readLine();
        }
    }catch (Exception e) {
        e.printStackTrace();
    } 
    if(flag){
        out.println("ok");
       
    }else{
        out.println("学号或密码错误!");
    }        
%>

</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嗯呢嗯呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值