如果用TOMCAT
把server.xml中
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
把server.xml中
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
解决方案 »
- Fileupload文件上传在Chrome下获取不到完整路径
- 如何将给定的日期后推一天
- java+" " and ""区别是什么
- 刚学习jsf,也写了粗糙的OA系统,寻求帮助
- 十万火急!
- 菜鸟提问:关于jakarta-tomcat-5.5.7和j2sdk1.4.2_07,大虾快进来!100分呀!!顶者有分!!!
- 请问Hibernate如何连SQL Server?
- 请问,我想输入http://127.0.0.1:8080/出现我的jsp页面,在Tomcat中怎么配置
- 各位老大,可以提供一个EJB(BMP)的例子吗? 同时请教PK类的作用?(给例子就有分)
- Servlet.service() for servlet jsp threw exception java.lang.NullPointerException
- struts2 子目录jsp File "/struts-tags" not found,根目录就没错这是为什么啊?
- 编写客户/服务器程序。并用datagramsocker发送数据
2.看看使用的编译工具编译的格式是不是gbk比方说eclipse里面的js编译方式改为gbk
我能改为gbk的地方都改了呀,还是不行,我也试着都为UTF-8,也是一样的不行呀
response.setContentType("text/xml; charset=GBK");
加上那个试试
xmlhttp.setRequestHeader("Method", "POST "+ url +" HTTP/1.1");
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
中文问题一直是java的头疼的问题,只能头疼医头,脚疼医脚String str = new String(str.getbytes("iso8859-1"),"gb2312")什么gbk、iso8859-1、gb18030、gb2312统统使唤一般轮番上阵,我还就不信解不开
返回ajax需要的数据,直接用utf-8肯定没错。
我若不用send(...)的,可以通过转码来解析的,用send后,就乱了.
这个也试了,用url=encodeURI(url); 或url=escape(url);网上找的资料,都要写两句,服务器上用 String userName= request.getParameter("userName");
try {
userName= java.net.URLDecoder.decode(userName,"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
编码还是不正常,若不用send(...),是没问题的,有人可能会问,你为何非要用send(...)呢?原因是这样的,不用send(...)的话,那传输的字符串长度有限(我本机测过,只能传1628个字节),而用send却很长(具体多长我没实测,四五千个以上吧),后来要想了这样一个办法,不是说中文用ajax传会乱吗,那我可不可以把中文转为类似英文的再传,服务器取到后,再转回来不是正常了吗?于是我决定弄个类似“中文翻译为英文”和“英文翻译为中文”的类,(注:这个类暂时我没写),后来又想想,要用这个类,不是要用到DWR吗?
啊,提到DWR,我茅塞顿开,干吗不用DWR来实现呢?还搞得这么麻烦,
后来试了一下,用DWR不存在乱码问题(可能是我暂时没发现吧,不一定不存在),
问题得到解决。还是DWR好用啊。建议类似乱码问题的朋友,可以学一下
DWR,比ajax好用多了。
问题是通过另一种方式解决了,但用ajax乱码的问题,我是还没完全解决的,
有兴趣的朋友,可以试着用我那个类似翻译的思路想想,应该可以解决的。由于本质的没解决,这个帖暂不结。
response.setCharterEncoding("GBK")
request.setCharterEncoding("GBK")
你可以注意一下那个文件是什么编码的
用UltraEdit等工具验证下
还有
在写Script块时候要写
charset="GBK"
默认不是utf-8的吗...?
var s="";
var names=document.getElementsByTagName("input");
for(var i=0,l=names.length;i<l;i++)
{
if(names[i].name)
s+=names[i].name+"="+encodeURIComponent(names[i].value)+"&";
}
s+="time="+new Data().getTime();
s=s.replace(/%/g,"#");这样在request.getParameter("");汉字内容时候会获取类似#ED#E4#AB#EA#A3#3E的utf-8编码
解码处理函数在下面
public String decodeUTF(String s) throws IOException
{
byte[] b=null;
if(getISUTF(s))
{
b=new byte[s.length()/3];
System.out.println(s);
System.out.println(s.length());
for(int i=0,j=0;i<s.length();i+=3,j++)
{
b[j]=getByte(s.charAt(i+1),s.charAt(i+2));
}
System.out.println(new String(b,"utf-8"));
}
else
{
b=s.getBytes();
}
return new String(b,"utf-8");
}
public boolean getISUTF(String s)
{
if(s.length()%3!=0)
return false;
for(int i=0;i<s.length();i+=3)
{
if(s.charAt(i)!='#')
return false;
}
return true;
}
public byte getInt(char a)
{
switch(a)
{
case '0':return (byte)0;
case '1':return (byte)1;
case '2':return (byte)2;
case '3':return (byte)3;
case '4':return (byte)4;
case '5':return (byte)5;
case '6':return (byte)6;
case '7':return (byte)7;
case '8':return (byte)8;
case '9':return (byte)9;
case 'A':return (byte)10;
case 'B':return (byte)11;
case 'C':return (byte)12;
case 'D':return (byte)13;
case 'E':return (byte)14;
case 'F':return (byte)15;
}
return -1;
}
public byte getByte(char a,char c)
{
byte b;
b=(byte) (getInt(a)*16+getInt(c));
return b;
}