首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

为什么小弟我的中文是乱码

2011-12-15 
为什么我的中文是乱码?我写了一个javabean,用来记录日志的packageHU.webimportjava.io.*importjava.sql.

为什么我的中文是乱码?
我写了一个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文件中文名的时候就要做这种转换。应该能解决你的问题。

[解决办法]
手动转码
public String chgCode(String in){
String out = null;
try {
// iso-8859-1 GB2312 GBK UTF-8 都试下


if(null!=in)
    out = new String(in.getBytes( "iso-8859-1 "), "GB2312 ");
else
out = " ";
}catch (Exception e) {
e.printStackTrace();
}
return out;
}
[解决办法]
好像懂你的意思,是字符集的问题,看你的JSP文件是什么编码格式,不是指页面里指定的而是文件的格式,另外修改你的IDE的字符集也可以解决,比如esclipse,选技工程的属性,在info项里找到text file encoding 默认是GBK,你可以选技UTF-8,或都所JSP文件另存为IDE工具指定的字符集格式,refresf这后,重新打开文件,应该好了
[解决办法]
如果用的jspIDE工具为dreamweaver的话,编辑--〉首选参数--〉字体--〉字体设置,看看是否是简体中文选项。还有:编辑--〉首选参数--〉新建文档--〉默认编码,看看是否是GB2312选项。
[解决办法]
String newstr = new String(str.getBytes( "8859_1 "), "gb2312 ");

编码根据环境选择
[解决办法]
将Java/J2EE系统的统一编码定义为UTF-8。UTF-8编码是一种兼容所有语言的编码方式,惟一比较麻烦的就是要找到应用系统的所有出入口,然后使用UTF-8去“结扎”它。

  一个J2EE应用系统需要做下列几步工作:

开发和编译代码时指定字符集为UTF-8。JBuilder和Eclipse都可以在项目属性中设置。
使用过滤器,如果所有请求都经过一个Servlet控制分配器,那么使用Servlet的filter执行语句,将所有来自浏览器的请求(request)转换为UTF-8,因为浏览器发过来的请求包根据浏览器所在的操作系统编码,可能是各种形式编码。关键一句:
request.setCharacterEncoding( "UTF-8 ")。
网上有此filter的源码,Jdon框架源码中com.jdon.util.SetCharacterEncodingFilter
需要配置web.xml 激活该Filter。
在JSP头部声明: <%@ page contentType= "text/html;charset= UTF-8 " %> 。
在Jsp的html代码中,声明UTF-8:
<meta http-equiv= "Content-Type " content= "text/html; charset=utf-8 ">
设定数据库连接方式是UTF-8。例如连接MYSQL时配置URL如下:
jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
一般数据库都可以通过管理设置设定UTF-8
其他和外界交互时能够设定编码时就设定UTF-8,例如读取文件,操作XML等。
[解决办法]
学习

热点排行