String s=new String(s1.getBytes("ISO-8859-1"),"GB2312")问题

时间:2023-01-15 11:46:19
大家好,我是JSP新手,刚学会了用输出流写文件,处理汉字的时候,有点小疑惑不懂,还请大家多多指教
先用Form表单做了提交
String str=getParameter(name);
String str1=new String(str.getBytes("ISO-8859-1"),"GB2312");
....
BufferedWriter bw=new BufferedWriter(docfile);
bw.write("str1");
...
然后打开连接的时候就会提示NullPointerException,做了catch还是提示
但是把
String str1=new String(str.getBytes("ISO-8859-1"),"GB2312");
放到
BufferedWriter bw=new BufferedWriter(docfile);
之后就不会提示了,工作正常.
在开头做了<%@ page contentType="text/html;charset=GB2312"%>了
谁能告诉下这是为什么啊,谢谢了

12 个解决方案

#1


String str= requestgetParameter(name); 
这个加上红色部分在试试!

#2


哦,我发贴的时候忘了写上request.了.代码里是有的

#3


docfile是从哪来的啊?

#4


不知所云!能不能把所有代码都贴出来啊!

#5


引用 3 楼 robyjeffding 的回复:
docfile是从哪来的啊?
其他的代码都省略了,只显示了出问题的部分

#6


请发全部代码
怀疑一:
String str=request.getParameter(name); 

--->String str=request.getParameter("name"); 

#7


str==null了,也就是你的request里面这个属性值是空的

#8


引用 3 楼 robyjeffding 的回复:
docfile是从哪来的啊?

请将描述的再详细一点,便于大家分析

#9


附上代码,谢谢大家了
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.io.*"%>
<HTML>
<BODY>
<Form method=post name=form1>
<input type="text" name="mingzi" value="name">
<input type="text" name="fenshu" value="0">
<input type="text" name="te" value="身高" >
<input type="submit" name="submit" value="送出">
</form>
<%
String name1=request.getParameter("mingzi");
String score=request.getParameter("fenshu");
String e1=request.getParameter("te");
//String name2=new String(name1.getBytes("ISO-8859-1"),"GB2312");
//String score2=new String(score.getBytes("ISO-8859-1"),"GB2312");
//String e2=new String(e1.getBytes("ISO-8859-1"),"GB2312");
try
{
File dirfile=new File("C:/","score");
dirfile.mkdir();
File scorefile=new File(dirfile,"score.txt");
FileWriter docfile=new FileWriter(scorefile);
BufferedWriter bf=new BufferedWriter(docfile);
String name2=new String(name1.getBytes("ISO-8859-1"),"GB2312");
String score2=new String(score.getBytes("ISO-8859-1"),"GB2312");
String e2=new String(e1.getBytes("ISO-8859-1"),"GB2312");
bf.write(name2);
bf.newLine();
bf.write(score2);
bf.newLine();
bf.write(e2);
bf.newLine();
bf.flush();
bf.close();
docfile.close();
}
catch(IOException e)
{}
catch(NullPointerException e)
{}
%>
</BODY>
</HTML>

//String name2=new String(name1.getBytes("ISO-8859-1"),"GB2312");
如果和
String name2=new String(name1.getBytes("ISO-8859-1"),"GB2312");
更换位置的话,编译就会报错,不明原因,谢谢大家指导

#10


首次请求这个jsp的时候,request.getParameter("mingzi"); 
是取不到值的。

你可以尝试首次请求的时候,传一些参数。

当然,实际上,你是应该判断一下这个请求是首次请求,还是由form submit提交上来的。

#11


LZ接受请求的是同一个页面,你在使用
name1.getBytes(...);
score2.getBytes(...);
e1.getBytes(...);
之前先判断下就ok了,因为你第一次请求确实没有值,不就
报告异常了?

#12


引用 10 楼 yuanjianbin 的回复:
首次请求这个jsp的时候,request.getParameter("mingzi"); 
是取不到值的。 

你可以尝试首次请求的时候,传一些参数。 

当然,实际上,你是应该判断一下这个请求是首次请求,还是由form submit提交上来的。

正解,谢谢了

#1


String str= requestgetParameter(name); 
这个加上红色部分在试试!

#2


哦,我发贴的时候忘了写上request.了.代码里是有的

#3


docfile是从哪来的啊?

#4


不知所云!能不能把所有代码都贴出来啊!

#5


引用 3 楼 robyjeffding 的回复:
docfile是从哪来的啊?
其他的代码都省略了,只显示了出问题的部分

#6


请发全部代码
怀疑一:
String str=request.getParameter(name); 

--->String str=request.getParameter("name"); 

#7


str==null了,也就是你的request里面这个属性值是空的

#8


引用 3 楼 robyjeffding 的回复:
docfile是从哪来的啊?

请将描述的再详细一点,便于大家分析

#9


附上代码,谢谢大家了
<%@ page contentType="text/html;charset=GB2312"%>
<%@ page import="java.io.*"%>
<HTML>
<BODY>
<Form method=post name=form1>
<input type="text" name="mingzi" value="name">
<input type="text" name="fenshu" value="0">
<input type="text" name="te" value="身高" >
<input type="submit" name="submit" value="送出">
</form>
<%
String name1=request.getParameter("mingzi");
String score=request.getParameter("fenshu");
String e1=request.getParameter("te");
//String name2=new String(name1.getBytes("ISO-8859-1"),"GB2312");
//String score2=new String(score.getBytes("ISO-8859-1"),"GB2312");
//String e2=new String(e1.getBytes("ISO-8859-1"),"GB2312");
try
{
File dirfile=new File("C:/","score");
dirfile.mkdir();
File scorefile=new File(dirfile,"score.txt");
FileWriter docfile=new FileWriter(scorefile);
BufferedWriter bf=new BufferedWriter(docfile);
String name2=new String(name1.getBytes("ISO-8859-1"),"GB2312");
String score2=new String(score.getBytes("ISO-8859-1"),"GB2312");
String e2=new String(e1.getBytes("ISO-8859-1"),"GB2312");
bf.write(name2);
bf.newLine();
bf.write(score2);
bf.newLine();
bf.write(e2);
bf.newLine();
bf.flush();
bf.close();
docfile.close();
}
catch(IOException e)
{}
catch(NullPointerException e)
{}
%>
</BODY>
</HTML>

//String name2=new String(name1.getBytes("ISO-8859-1"),"GB2312");
如果和
String name2=new String(name1.getBytes("ISO-8859-1"),"GB2312");
更换位置的话,编译就会报错,不明原因,谢谢大家指导

#10


首次请求这个jsp的时候,request.getParameter("mingzi"); 
是取不到值的。

你可以尝试首次请求的时候,传一些参数。

当然,实际上,你是应该判断一下这个请求是首次请求,还是由form submit提交上来的。

#11


LZ接受请求的是同一个页面,你在使用
name1.getBytes(...);
score2.getBytes(...);
e1.getBytes(...);
之前先判断下就ok了,因为你第一次请求确实没有值,不就
报告异常了?

#12


引用 10 楼 yuanjianbin 的回复:
首次请求这个jsp的时候,request.getParameter("mingzi"); 
是取不到值的。 

你可以尝试首次请求的时候,传一些参数。 

当然,实际上,你是应该判断一下这个请求是首次请求,还是由form submit提交上来的。

正解,谢谢了