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