为什么我的中文是乱码?
我写了一个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&characterEncoding=UTF-8
一般数据库都可以通过管理设置设定UTF-8
其他和外界交互时能够设定编码时就设定UTF-8,例如读取文件,操作XML等。
[解决办法]
学习