• 在JSP中读文件及时间字符串转日期格式中踩的坑


    1、按行读取文件内容时,中文乱码问题:

    ①出错的代码:

    FileReader fr = new FileReader(linefile);  //字符输入流

    BufferedReader br = new BufferedReader(fr);  //使文件可按行读取并具有缓冲功能

    ②出错原因:

    直接使用FileReader读取一个包含中文字符的文件,将字符输入流放到BufferedReader中,通过BufferedReader读取出来的中文字符串乱码. 文件流读取时使用的编码方式和文件本身编码方式不同,造成读取出来文件乱码.

    ③解决办法:

    读取文件时指定读取文件的编码方式. 使用FileInputStream类读取文件流,BufferedReader构造方法只能接收字符流,利用InputStreamReader将字节流转化为字符流,同时指定文件流的编码方式,将字符流放到 BufferedReader中,进行操作,中文读取乱码问题解决.

    ④修改后的代码:

    InputStreamReader isr = new InputStreamReader(new FileInputStream(linefile), "UTF-8");

    BufferedReader br = new BufferedReader(isr);  //使文件可按行读取并具有缓冲功能

    2、数据库datetime格式出错一直存不进去

    ①一开始以为是要转换成日期格式做了以下尝试,遇到的问题:

    Type mismatch: cannot convert from java.util.Date to java.sql.Date

    文档中同时引用了java.util.*和java.sql.*的头文件。而这两个文件中都包含了Date;

    SimpleDateFormatsdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    java.util.Date date = sdf.parse(需要转的字符串);

    java.sql.Date dateTime = new java.sql.Date(date.getTime());

    ②发现改了格式之后,发现sql语句依旧无法执行:

    出现Unparseable date: "2020‐01‐07 16:24:47"的错误

    解析不了此格式:把这个字符串复制到别的文档下查看,发现是‘-’和'‐'的问题

    ③一般来说可以直接存成String格式的:pstmt.setString(2,"2020-01-07 16:24:47");

    也可以用pstmt.setDate方法,这里存的Date格式是java.sql.Date

    3、以下代码无法执行:提示找不到msg

    <script language="javascript">
    window.alert("<%=msg %>");
    window.document.location.href="index.jsp";
    </script>

    解决方法:在文件开头就定义(具体原因没有探究,可能是全局和局部变量原因)

    <%
    String msg = "添加失败,单击确定跳转图书列表页!";
    %>

  • 相关阅读:
    作业
    bash陷阱
    Hive
    工作小结
    Python脚本没有实时print信息
    Ubuntu下apt-get遇到Hash Sum Mismatch
    微信小程序要2017-01-19号发布!
    flex布局学习(四)flex色子布局练习
    flex布局学习(三)
    flex布局学习(二)
  • 原文地址:https://www.cnblogs.com/XxZzYy/p/12630996.html
Copyright © 2020-2023  润新知