为什么我的中文是乱码?

luoxu0501 2007-01-07 10:50:30
我写了一个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+"的用户信息");
双引号里面的中文字都变成了乱码,哪位大虾帮帮忙啊。都看不清楚些的是什么字。真是倒霉。

...全文
455 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzh963 2007-01-10
  • 打赏
  • 举报
回复
好像懂你的意思,是字符集的问题,看你的JSP文件是什么编码格式,不是指页面里指定的而是文件的格式,另外修改你的IDE的字符集也可以解决,比如esclipse,选技工程的属性,在info项里找到text file encoding 默认是GBK,你可以选技UTF-8,或都所JSP文件另存为IDE工具指定的字符集格式,refresf这后,重新打开文件,应该好了
luoxu0501 2007-01-10
  • 打赏
  • 举报
回复
up
luoxu0501 2007-01-10
  • 打赏
  • 举报
回复
我说的中文是代码中的中文,不需要显示的,日志里面的中文也是完好的。就是代码中的中文变成乱码阿。。。
我总觉得应该在页面设置中改,难道你们没有出现过吗?
tony_zhou820602 2007-01-10
  • 打赏
  • 举报
回复
学习
sherry521 2007-01-10
  • 打赏
  • 举报
回复
将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等。
聪头 2007-01-10
  • 打赏
  • 举报
回复
String newstr = new String(str.getBytes("8859_1"), "gb2312");

编码根据环境选择
yeeshengwei 2007-01-10
  • 打赏
  • 举报
回复
如果用的jspIDE工具为dreamweaver的话,编辑--〉首选参数--〉字体--〉字体设置,看看是否是简体中文选项。还有:编辑--〉首选参数--〉新建文档--〉默认编码,看看是否是GB2312选项。
luoxu0501 2007-01-08
  • 打赏
  • 举报
回复
都不行啊,还是乱码。
String filename="用户名为"+xsyxm+"修改了用户id"+xsyid+"用户名为"+xm+"的用户信息";
双引号里面的中文在页面代码中又变成了乱码,真不知道应该怎么搞

不知道是不是javabean里面的编码方式和dreamweaver页面的编码方式不同啊?怎么弄阿
RichardZ917 2007-01-08
  • 打赏
  • 举报
回复
页面代码修改:
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文件中文名的时候就要做这种转换。应该能解决你的问题。
CCTV_13 2007-01-08
  • 打赏
  • 举报
回复
手动转码
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;
}
luoxu0501 2007-01-08
  • 打赏
  • 举报
回复
up
Wasingmon 2007-01-07
  • 打赏
  • 举报
回复
加入pageEncoding属性试试
<%@ page language="java" pageEncoding="GB2312"%>

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧