在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 = "添加失败,单击确定跳转图书列表页!";
%>

原文地址:https://www.cnblogs.com/XxZzYy/p/12630996.html