日期:2014-05-18  浏览次数:20697 次

为什么我的中文是乱码?
我写了一个javabean,用来记录日志的
package   HU.web;

import   java.io.*;
import   java.sql.*;
import   java.util.*;
import   java.util.Date;
/**
  *   Title:               明细单信息
  huhui
  */
    public   class   RIZHI{
    private   PrintWriter   pw;
    private   String   div= "/1.txt ";
   
    public   void   RIZHI(){}
    public   void   log(String   msg)   {
   
        try{
        pw=new   PrintWriter(new   FileWriter(div,true),true);
       
        pw.println(new   Date()   +   ":   "   +   msg);
        pw.close();
        }catch(IOException   e){pw.println(e.getMessage());}
       
    }
   
   
   
   
}


然后在主文件里是这样调用的。


<%@   page   contentType= "text/html;   charset=gb2312 "   language= "java "   import= "java.sql.* "   errorPage= " "   %>
<jsp:useBean   id= "yhxx1 "   scope= "page "   class= "HU.web.YHXX "   />
<jsp:useBean   id= "rizhi1 "   scope= "page "   class= "HU.web.RIZHI "   />

<%
  String   Page=request.getParameter( "page ");
  String   xsyid=request.getParameter( "xsyid ");
  String   xsyxm=(String)session.getAttribute( "xsyxm ");
  if   (xsyid!=null){
  yhxx1.setXsyid(xsyid);
  yhxx1.excute();
  }
  String   xm=yhxx1.getXsyxm();
  yhxx1.Edit(request);
 
  response.sendRedirect( "yhxx_bh.jsp?page= "+Page);
  rizhi1.log( "用户名为 "+xsyxm+ "修改了用户id "+xsyid+ "用户名为 "+xm+ "的用户信息 ");

  %>


运行了以后,把文件关闭后再打开,最后一句里面的那些中文字都变成乱码,就是这句阿rizhi1.log( "用户名为 "+xsyxm+ "修改了用户id "+xsyid+ "用户名为 "+xm+ "的用户信息 ");
双引号里面的中文字都变成了乱码,哪位大虾帮帮忙啊。都看不清楚些的是什么字。真是倒霉。



------解决方案--------------------
加入pageEncoding属性试试
<%@ page language= "java " pageEncoding= "GB2312 "%>
------解决方案--------------------
页面代码修改:
String filename= "用户名为 "+xsyxm+ "修改了用户id "+xsyid+ "用户名为 "+xm+ "的用户信息 ";
Tools tool = new Tools();
filename = tool.reconvert(filename);
rizhi1.log(filename);

Tools工具代码:
public class Tools{
public String reconvert(String str) {
String str1 = null;
if (str != null) {
try {
str1 = new String(str.getBytes( "GBK "), "ISO8859_1 ");
} catch (Exception e) {
return str1;
}
}
return str1;

}
}


试试吧,字符串编码反转换,保存EXCEL文件中文名的时候就要做这种转换。应该能解决你的问题。

JAVA中如何设置多行表头