Unicode编码:保存中文cookie

中文和英文字符不同,中文属于Unicod字符,在内存中站4个字符,而英文属于ASCII字符,内存中只占2个字符。Cookie中使用Unicode字符时需要对Unicode字符进行编码,否则会乱码。编码使用java.net.URLEncoder类的encode(String str,String encoding)方法,解码使用java.net.URLDecoder类的decode(String str,String encoding)方法。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"  %>
<jsp:directive.page import="java.net.URLEncoder"/>
<%@ page import="java.net.URLDecoder" %>
<%
    Cookie cookie =new Cookie(URLEncoder.encode("姓名","UTF-8"),
            URLEncoder.encode("刘京华", "UTF-8")
            );
    response.addCookie(cookie);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <%
        if(request.getCookies()!=null){
            for(Cookie cc:request.getCookies()){
                String cookieName=URLDecoder.decode(cc.getName(), "UTF-8");
                String cookieValue=URLDecoder.decode(cc.getValue(), "UTF-8");
                out.println(cookieName+"="+cookieValue);
            }
        }else{
            out.println("Cookie 已经写入客户端,请刷新");
        }

    %>
</body>
</html>

结束语:Cookie保存中文只能编码,一般使用UTF-8编码即可。不推荐使用GBK等中文编码,因为浏览器不一定支持,而且javascript也不支持GBK编码。

时间: 2024-08-07 14:25:12

Unicode编码:保存中文cookie的相关文章

Unicode编码与中文的转换

1.1.  将unicode编码转换为中文 public String decodeUnicode(String src) { char[] in = src.toCharArray(); char aChar; char[] out = new char[src.length()]; int outLen = 0; int off = 0; int end = src.length(); while (off < end) { aChar = in[off++]; if (aChar == '

PHP解码unicode编码的中文字符

问题背景:晚上在抓取某网站数据,结果在数据包中发现了这么一串编码的数据:"......\u65b0\u6d6a\u5fae\u535a......www.jinyuanbao.cn", 这其实是中文被unicode编码后了的数据,我现在就是想解码出中文来,疯狂的google之后,发现很多人贴出了如下的函数,不过我发现根本不好使....如何解码unicode编码的字符?[好使] - PHP网站开发 - [开源与分享]每日最新博客在置顶博客之后: 如何解码unicode编码的字符?[好使]

中文转换成Unicode编码 和 Unicode编码转换为中文

前几天,遇到一个问题,就是在浏览器地址栏传递中文时,出现乱码,考虑了一下,解决方式有很多,我还是采用了转换编码的方式,将中文转换为Unicode编码,然后再解码成中文,以下是实现的过程,非常简单! package cy.code; public class CyEncoder { private String zhStr; //中文字符串 private String unicode;//将中文字符串转换为Unicode编码 存储在这个属性上. public CyEncoder(String z

JavaScript为unicode编码转换为中文

代码laycode - v1.1 关于这样的数据转换为中文问题,常用的以下方法. 1. eval解析或new Function("'+ str +'")()  str = eval("'" + str + "'"); // "我是unicode编码" 1 代码laycode - v1.1 2. unescape 解析  str = unescape(str.replace(/\u/g, "%u")); //

JavaScript为unicode编码转换为中文(转)

var str = "\\u6211\\u662Funicode\\u7F16\\u7801"; 关于这样的数据转换为中文问题,常用的以下方法. 1. eval解析或new Function("'+ str +'")() str = eval("'" + str + "'"); // "我是unicode编码" 2. unescape 解析 str = unescape(str.replace(/\u/g,

unicode编码与中文互相转换

如你的原始文件是1.properties(这个文件是中文编码),你想转换成unicode的 则在cmd下进入到你这个文件所在的目录键入: native2ascii -encoding gb2312 1.properties 2.properties, 执行命令后你会在当前目录下看到一个2.properties的文件,内容就是1.properties的unicode编码内容. 如果你再想转换回来,同样在cmd下进入文件所在的目录键入: native2ascii -reverse -encoding

VS2015解决非Unicode编码包含中文字段无法编译的问题

用VS2015打开并编译,定位到编译错误的文件(.cs而不是可视化编辑视图) 文件--高级保存选项--编码 改为 Unicode-代码页1200 这样不论用VS2015/2013/2012/2010 都可以正常编译了 以往版本的VS不会出现这个问题,不知道是否是VS2015的bug

js 16进制Unicode编码与中文相互转换

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <script language=javascript> function utf8to16(str) { var out, i, len, c; var char2, char3; out = &quo

C#中文和UNICODE编码转换

C#中文和UNICODE编码转换 //中文轉為UNICODE string str = "中文"; string outStr = ""; if (!string.IsNullOrEmpty(str)) { for (int i = 0; i < str.Length; i++) { //將中文轉為10進制整數,然後轉為16進制unicode outStr += "\\u" + ((int)str[i]).ToString("x&