在页面上显示的从数据库读出的中文都是乱码,试过蛮多方法了,请教!
<%@ page   contentType="text/html;   charset=gb2312"   %>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%@ page import="java.util.*" %>
<%@ page import="bookshop.book.bookclass" %>
<%@ page session="true" %>
<%@ page import="bookshop.book.book"%>
<jsp:useBean id="book" scope="page" class="bookshop.book.book" />
<jsp:useBean id="book_list" scope="page" class="bookshop.run.op_book" />
<jsp:useBean id="classlist" scope="page" class="bookshop.run.op_bookclass" /><%
int pages=1;
String mesg = "";
if (request.getParameter("page")!=null && !request.getParameter("page").equals("")) {
String requestpage = request.getParameter("page");
try {
pages = Integer.parseInt(requestpage);
} catch(Exception e) {
mesg = "你要找的页码错误!";
}
book_list.setPage(pages);
}
%>
<script language="javascript">
function openScript(url,name, width, height){
var Win = window.open(url,name,'width=' + width + ',height=' + height + ',resizable=1,scrollbars=yes,menubar=no,status=yes' );
}
</script>
<%@include file="/bookshop/inc/head.inc"%>
<%@include file="/bookshop/inc/sub.inc"%>
<table width="778">
  <tr>
     <td width="150" align="center">
     <%@include file="/bookshop/inc/left.inc"%>
     </td>
     <td width="600">
          <p align="center"><b><font color="#0000FF">清风电子书店图书<%= classname %>列表</font></b></p>
      <%if (!keyword.equals("")) out.println("<p ><font color=#ff0000>你要查找关于&nbsp;" + keyword + "&nbsp;的图书如下</font></p>"); %>
          <table width="100%" border="1" cellspacing="1" cellpadding="1" bordercolor="white">
          <tr align="center" bgcolor="#DEF3CE"> 
            <td>图书名称</td>
            <td>作者</td>
            <td>图书类别</td>
            <td>出版社</td>
            <td>单价</td>
            <td width=110>选择</td>
          </tr>
<% if (book_list.book_search(request)) {
if (book_list.getBooklist().size()>0 ){
for (int i=0;i<book_list.getBooklist().size();i++){
book bk = (book) book_list.getBooklist().elementAt(i);%>
          <tr>
            <td><%= bk.getBookName() %></td>
            <td align="center"><%= bk.getAuthor()%></td>
            <td align="center"><%= bk.getClassname() %></td>
            <td align="center"><%= bk.getPublish() %></td>
            <td align="center"><%= bk.getPrince() %>元</td>
            <td align="center"><a href="#" onclick="openScript('buy.jsp?bookid=<%= bk.getId() %>','pur',300,250)" >购买</a>&nbsp;
<a href="#" onclick="openScript('detail.jsp?bookid=<%= bk.getId() %>','show',400,500)" >详细资料</a></td>
          </tr>
<% } 
}else { 
if (keyword.equals("")){
out.println("<tr><td align='center' colspan=6>&nbsp;暂时没有此类图书资料</td></tr>");
} else {
out.println("<tr><td align='center' colspan=6>&nbsp;没有你要查找的&nbsp;" + keyword + "&nbsp;相关图书</td></tr>") ;
}
}
} else {%>
          <tr>            
            <td align="center" colspan=6>&nbsp;数据库出错,请稍后</td>
            
          </tr>
<% } %>        </table>
        <table width="90%" border="0" cellspacing="1" cellpadding="1">
          <tr>
            <td align="right">总计结果为<%= book_list.getRecordCount() %>条,当前页第<%= book_list.getPage() %>页 <a href="booklist.jsp?classid=<%= classid%>&keyword=<%= keyword %>">首页</a>&nbsp; 
              <% if (book_list.getPage()>1) {%>
              <a href="booklist.jsp?page=<%= book_list.getPage()-1 %>&classid=<%= classid%>&keyword=<%= keyword %>">上一页</a>&nbsp; 
              <% } %>
              <% if (book_list.getPage()<book_list.getPageCount()-1) {%>
              <a href="booklist.jsp?page=<%= book_list.getPage()+1 %>&classid=<%= classid%>&keyword=<%= keyword %>">下一页</a>&nbsp; 
              <% } %>
              <a href="booklist.jsp?page=<%= book_list.getPageCount() %>&classid=<%= classid%>&keyword=<%= keyword %>">未页</a>&nbsp;</td>
          </tr>
        </table>
      </td>
    </tr>
   </table>
  </td>
 </tr>
</table>  
<%@include file="/bookshop/inc/tail.inc"%>

解决方案 »

  1.   

    要进行转码,你看看这个:
    http://community.csdn.net/Expert/topic/4757/4757694.xml?temp=.5476038
      

  2.   

    你JSP页面乱码吗? 还是从后台传来的数据乱码?
      

  3.   

    要进行转码
    例如:
    String str=request.getParameter();
    byte b[]=str.getByte("ISO-9810");
    String aa=new String(b);
    具体那个参数(ISO-9810)记不清楚了
      

  4.   

    String str=request.getParameter();
    byte b[]=str.getByte("ISO8859-1");
    String aa=new String(b);
      

  5.   

    <%@page language="java" contentType="text/html; charset=gb2312"%>
    <%request.setCharacterEncoding("GBK");%>str = new String(str.getBytes("ISO-8859-1"),"GBK");保证可以!
      

  6.   

    进行转码操作
    <%request.setCharacterEncoding("gbk")%>
    就OK了
      

  7.   

    org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 10 in the jsp file: /bookshop/booklist.jsp
    照楼上说的做了出现一下错误?
    Generated servlet error:C:\Tomcat\work\Catalina\localhost\_\org\apache\jsp\bookshop\booklist_jsp.java:89: cannot resolve symbol
    symbol  : method setCharacterEncoding (java.lang.String)
    location: interface javax.servlet.http.HttpServletRequest
    request.setCharacterEncoding("GBK");
           ^
    1 error
      

  8.   

    <%request.setCharacterEncoding("UTF-8")%>
      

  9.   

    在所有jsp语句最前面写上:
    request.setCharacterEncoding("gb2312");在往页面传值时,如果页面上显示是乱码,就把那些可能是中文的字符串加上这么一句:
    strName=new String(strName.getBytes("GB2312"),"iso8859-1");
      

  10.   

    str=new String(str.getBytes("ISO8859_1"),"GBK");
      

  11.   

    是读入数据库后有乱吗?
    在jsp页面上能改吗?我加这句代码的时候还是会有错,请问怎么改呢?
    request.setCharacterEncoding("GBK");
           ^
    1 error