站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题关于JSP操作文本文件的中文乱码的问题

关于JSP操作文本文件的中文乱码的问题

摘要: 关于JSP操作文本文件的中文乱码的问题


我做了一个用JSP操作file2.txt文本文件的程序可是在写入中文时总是写入????,不知道为什么,高手请指教.
源代码如下,

<head>
读写内容到文件

</head>
<body>
<form name="form1" method="post"action="sample10.jsp">

请输入



<textarea name="textarea" cols="50" rows="10"></textarea>



<input type="submit" value="提交">
<input type="reset" value="重填">


</form>
</body>

下面是sample10.jsp的代码
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ page import="java.io.*"%>

<head>
将内容写到文本
</head>
<body>

<%
String path=request.getRealPath("/");
File fp=new File(path,"file2.txt");
FileWriter fwriter=new FileWriter(fp,true);

request.setCharacterEncoding("GBK");
String str_file=request.getParameter("textarea");
fwriter.write(str_file);
fwriter.close();
out.println("写入文件");
%>

</body>



我帮你试了一下, 根本没有问题... 是不是 LZ 搞错了..


编码换成iso-8859-1



乱码头疼, 还是基础不扎实, 我也一样, 对字符集等没有理解啊...


楼主:
把你的sample10.jsp改成如下这样就行了

</head>
<body>

<%
String path=request.getRealPath("/");
File fp=new File(path,"file2.txt");
FileWriter fwriter=new FileWriter(fp,true);

//request.setCharacterEncoding("utf-8");
String str_file=request.getParameter("textarea");
str_file = new String(str_file.getBytes("ISO8859_1"));
out.println(str_file);
fwriter.write(str_file);
fwriter.close();
out.println("写入文件");
%>

</body>



</head>
<body>

<%
String path=request.getRealPath("/");
File fp=new File(path,"file2.txt");
FileWriter fwriter=new FileWriter(fp,true);

//request.setCharacterEncoding("utf-8");
String str_file=request.getParameter("textarea");
str_file = new String(str_file.getBytes("ISO8859_1"));

fwriter.write(str_file);
fwriter.close();
out.println("写入文件");
%>

</body>



str_file=new String(str_file.getBytes("ISO_8859_1"),"GBK");
java的编码是unicode


为什么我这里不行呢,即使按照上面的几位说的改了,还是乱码.我是刚学JSP的我的程序是在一本基础书上找到的,按说不应该出什么问题,难道是什么地方的设置不对.
请问一下大家的jdk是在哪里搞的我是在官方网弄的,是不是它没做好中文的东西


踩個腳印,關注中


<%request.setCharacterEncoding("gb2312");%>加上这个试试看呢


我觉得<%request.setCharacterEncoding("gb2312");%>
和str_file = new String(str_file.getBytes("ISO8859_1"));
的作用是一样的,我试过,都不行,很奇怪的是二楼说他试了,程序没问题.为什么我试就有问题呢?


lz,你把你的sample10.jsp里的charset=GBK改成gb2312.不知道你
request.setCharacterEncoding("GBK");//这样有啥用!
我以前写jsp 文件操作就上面写gb2312,啥问题都没有,你不要在程序里变换编码方式!自己给自己找麻烦!


GBK好象是gb2312的升级版本.作用是一样.
request.setCharacterEncoding("GBK");//是转换格式的
问题好象就是出在存的过程,如果直接将原来html中textarea中的文本显示并没有问题.
request.setCharacterEncoding("GBK");
String str_file=request.getParameter("textarea");
out.println(str_file);
显示是正常的.
你说你原来没问题,我发现二楼的也说程序没问题,我想问题是不是jdk出了问题,你的jdk是从哪里下的.


哇!又是一个字符集的问题哈。看来我学习的时候可要好好学习那部分了


感谢andybogard(Lee灬.郁闷时.灬ㄖ(.oo上上网.┈→.)
将request.setCharacterEncoding("GBK");
改成
request.setCharacterEncoding("iso-8859-1");
就可以,不过我还是有点困惑,为什么二楼的说程序没错呢,而且这段程序是在一本书上抄的.书上还有图片看的出作者是确实编译执行过.
谁有什么高见呀?
再一次感谢所有参与的人特别是andybogard

本人分数有限,只好给了andybogard
读的时候又怎么办呢?有没有类似的方法把Encoding设置一下呢?


↑返回目录
前一篇: 永远的Data too long for column!!哭,高分求助!
后一篇: 如何在JSP文件中导入JS文件?