关于警告的神奇:编码 GBK 的不可映射字符 JCreator编译问题
mayi 2011-08-23 10:35:19 我用JCreator写了一个小servlet程序: 程序如下:
//登陆成功
package com.mayi;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class Wel extends HttpServlet{
//处理请求
//重写doGet() doPost();
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{
Connection ct=null;
Statement sm=null;
ResultSet rs=null;
//解决中文乱码
res.setContentType("text/html;charset=gb2312");
PrintWriter pw= res.getWriter();
pw.println("<body><center>");
//得到Session
HttpSession hs=req.getSession(true);
String id=hs.getId();
String val=(String)hs.getAttribute("pass");
String name=(String)hs.getAttribute("name");
if(val==null){
res.sendRedirect("login");
}
//接收Logincl传递的用户名
String u=req.getParameter("uname");
String p=req.getParameter("upass");
pw.println("<h1>Welcome to servlet!</h1>");
///加载图片
pw.println("<img src=imgs/b.gif><br>");
///显示ID 和 名称 密码
pw.println("你的名字是:"+u+" 你的密码是:"+p+"<br>");
pw.println(" 这个Session的ID是:"+id+" 名字是: "+name);
///-------分页功能--------
int pageSize=3; ///每一页显示多少个
int pageNow=1; ///显示第几页
int pageCount=1; ///总共有多少页
int rowCount=0; ///总共有多少个
int num=0;
///获得第几页
String number=req.getParameter("number");
System.out.println(number);
if(number==null){
//第一次登陆
}else{
pageNow=Integer.parseInt(number);
num=pageSize*(pageNow-1);
}
///链接数据库
//获得链接
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mayi","sa","123");
sm=ct.createStatement();
rs=sm.executeQuery("select count(*) from users ");
///计算rowCount pageCount
if(rs.next()){
rowCount=rs.getInt(1);
}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
rs=sm.executeQuery("select top 3 * from users where userId not in(select top "+num+" userId from users) ");
///建立信息表
pw.println("<h1>查询结果</h1>");
pw.println("<table border=1");
pw.println("<tr><th>Id</th><th>name</th><th>passwd</th><th>email</th><th>grade</th></tr>");
while(rs.next()){
pw.println("<tr>");
pw.println("<td>"+rs.getInt("userId")+"</td>");
pw.println("<td>"+rs.getString("username")+"</td>");
pw.println("<td>"+rs.getString("passwd")+"</td>");
pw.println("<td>"+rs.getString("email")+"</td>");
pw.println("<td>"+rs.getInt("grade")+"</td>");
pw.println("</tr>");
}
pw.println("</table>");
////上一页
pw.println("<a href=wel?number="+(pageNow-1)+">上一页</a>");////链接地址 web 为servlet中的URL地址!?
///第几页链接
for (int i =pageNow; i<pageNow+pageSize+4;i++){
pw.println("<a href=wel?number="+i+">"+i+"</a>");////链接地址 web 为servlet中的URL地址!!
}
///下一页
pw.println("<a href=wel?number="+(pageNow+1)+">下一页</a>");////链接地址 web 为servlet中的URL地址!?
///做个超链接
pw.println("<br><a href=login>返回重新登陆</a>");
pw.println("</body></center>");
}catch(Exception ce){
ce.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
警告:编码 GBK 的不可映射字符
我就按照网上的方法 :
修改后为:-encoding UTF-8 -classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]
再编译一下 发现更多的错误!!我很是郁闷!! 就又改回原来的默认值为:-classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]
最后我用eclipse把源代码整理了一下 就是使代码整洁一点 你懂的!
它居然编译通过了???
我不信 用Ctrl+Z回到原来的状态 在编译 还是没问题!!! 神奇了 刚刚死都编译不过 现在倒好 怎么都能编译的过了!!
不知哪位大侠能告诉小弟一声我 这是为什么啊!! 好让我长点经验!!!