用户登录名为中文,出现的服务器500错误的解决方法
2012-04-12 17:54
344 查看
今天完成了一个用cookie记录用户名的功能,之前没有考虑到用户的用户名如果是中文会是怎样的影响。就在测试的时候,用了一个中文去登陆,发现报错,错误信息如下:
java.lang.IllegalArgumentException: Control character in cookie value, consider BASE64 encoding your value
后来上网查了下,才知道原来是转码的问题,解决方法如下;
J2EE Doc里面的,cookies只支持ASCII字符,而且不能有逗号,分号,
空白。或者以$开头。名字在创建后不能改变。如果要存储中文的,先用URLEcode编码,在存入,取出的时候,用decode解码!
解决方法:
//创建cookie 考虑到用户名可能为中文,先使用URLEncoder.encode(String,String)编码,在取出的时候解码
Cookie cookiename = new Cookie("uname", URLEncoder.encode(uname,"utf-8"));
//encode(String,String )另一个方法encode(String)过时了,参考文档不推荐使用
//考虑到输入的用户名可能有中文,在前面已经使用URLEncoder编码了,这里需要使用URLDecoder解码
String unameVal = URLDecoder.decode(cookie.getValue(),"utf-8");
详细代码如下
import java.net.URLEncoder;
Cookie c = new Cookie("Name",URLEncoder.encode(pName));
c.setMaxAge(30);
response.addCookie(c);
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
if(cookies[i].getName().equals("Love"))
pLove=URLDecoder.decode(cookies[i].getValue());}
}
java.lang.IllegalArgumentException: Control character in cookie value, consider BASE64 encoding your value
后来上网查了下,才知道原来是转码的问题,解决方法如下;
J2EE Doc里面的,cookies只支持ASCII字符,而且不能有逗号,分号,
空白。或者以$开头。名字在创建后不能改变。如果要存储中文的,先用URLEcode编码,在存入,取出的时候,用decode解码!
解决方法:
//创建cookie 考虑到用户名可能为中文,先使用URLEncoder.encode(String,String)编码,在取出的时候解码
Cookie cookiename = new Cookie("uname", URLEncoder.encode(uname,"utf-8"));
//encode(String,String )另一个方法encode(String)过时了,参考文档不推荐使用
//考虑到输入的用户名可能有中文,在前面已经使用URLEncoder编码了,这里需要使用URLDecoder解码
String unameVal = URLDecoder.decode(cookie.getValue(),"utf-8");
详细代码如下
import java.net.URLEncoder;
Cookie c = new Cookie("Name",URLEncoder.encode(pName));
c.setMaxAge(30);
response.addCookie(c);
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
if(cookies[i].getName().equals("Love"))
pLove=URLDecoder.decode(cookies[i].getValue());}
}
相关文章推荐
- Linux下出现断网但用户并没有退出登录的解决方法
- 在浏览器传中文参数时在本地上转码是正常的,到服务器上出现乱码情况时解决方法
- 小猪CMS微信管理平吧,用户登录出现小猪广告解决方法
- Ajax获取服务器上的HTML文件出现中文乱码的解决方法
- 访问时出现:未授予用户在此计算机上的请求登录类型的解决方法
- win 7 删除了用户文件夹后出现的&quot;你已使用临时配置文件登录&quot;提示的解决方法
- Android编程向服务器发送请求时出现中文乱码问题的解决方法
- FTP服务器匿名用户登录失败解决方法
- SQL2008无法连接到.\SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方法 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, er
- 服务器:消息18456,级别16,状态1 用户‘sa’登录失败解决方法
- 要登录到这台远程计算机,您必需拥有这台计算机上的‘终端服务器用户访问’权限解决方法
- 服务器:消息18456,级别16,状态1 用户‘sa’登录失败解决方法
- swfupload批量上传图片,测试本地成功服务器出现404或500错误解决方法
- ubuntu设置好samba服务器后,windows登录共享目录时出现“Samba服务器 解决不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接”
- 服务器:消息18456,级别16,状态1 用户‘sa’登录失败解决方法
- ASP.NET仅配置数据库MSDE出现"用户 ’机器名/ASPNET’ 登录失败 解决方法
- phpmyadmin 出现“#2002 无法登录 MySQL 服务器”解决方法
- 解决用户登录不同服务器,不同服务器验证用户身份的方法。
- 在配置windows2003域控时出现“未授予用户在此计算机上的请求登录类型”错误提示的解决方法
- IIS中配置asp.net出现用户 NT AUTHORITY\NETWORK SERVICE 登录失败(sql2005/2008解决方法)