精华内容
下载资源
问答
  • javascript 中对字符进行编码

    千次阅读 2012-10-24 16:19:22
    javascript 中存在几种 URL 字符进行编码的方法:escape(),encodeURI(),以及 encodeURIComponent()。这几种编码所起的作用各不相同。   ● escape() 方法   采用 ISO Latin 字符指定的字符进行...
       javascript 中存在几种对 URL 字符串进行编码的方法:escape(),encodeURI(),以及 encodeURIComponent()。这几种编码所起的作用各不相同。
     
    

        ●  escape() 方法  
              采用 ISO Latin 字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非 ASCII 字符都将被转化成 %XX 格式的字符编码(XX 等于该字符在字符集表里面的编码的 16 进制数字)。比如,空格符对应的编码是 %20。 
              不会被此方法编码的字符: @ * / + 

    Javascript代码   收藏代码
    1. /** 
    2.  * 最终会被转码的字符有空格,逗号。半角句号不会被编码。可能是考虑到是对 URL 进行编码,URL 中有很多 dot,因此忽略 dot 的编码(个人理解:除了半角句号外,其它的涉及到标点的都会被编码)。下面的代码将会输出:/@*+I%20am%20Chinese%2C.%u6211 
    3.  */  
    4. var s = "/@*+I am Chinese,.我";  
    5. document.write(s);  


        ●  encodeURI() 方法  
              把 URI 字符串采用 UTF-8 编码格式转化成 escape 格式的字符串。该方法主要是对地址栏的 URL 进行编码,因此地址栏中所用到的字符不会被编码。 
              不会被此方法编码的字符:! @ # $ & * ( ) = : / ; ? + ' 

    Javascript代码   收藏代码
    1. /** 
    2.  * 该函数主要是对浏览器的地址栏进行编码。 
    3.  * 下面代码运行结果会在浏览器的地址栏中显示:http://www.baidu.com/?id=12&key=%E5%8C%97%E4%BA%AC%E4%B8%A4%E4%BC%9A&money=$12 
    4.  */  
    5. var loc = "http://www.baidu.com?id=12&key=北京两会&money=$12";  
    6. window.location = encodeURI(loc);  


        ●  encodeURIComponent() 方法  
              把 URI 字符串采用 UTF-8 编码格式转化成 escape 格式的字符串。与 encodeURI() 相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了 URI 的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL 将显示错误。 
    Javascript代码   收藏代码
    1. /** 
    2.  * 该段代码的字符串中含有 "/",因此编码完后的 URL 不是合法的 URL 格式 
    3.  * 输出结果为:http%3A%2F%2Fwww.baidu.com%3Fid%3D12%26key%3D%E5%8C%97%E4%BA%AC%E4%B8%A4%E4%BC%9A%26money%3D%2412  
    4.  */  
    5. var loc = "http://www.baidu.com?id=12&key=北京两会&money=$12";  
    6. document.write(encodeURIComponent(loc));  
    展开全文
  • 使用Huffman方法对字符进行编码

    千次阅读 2013-08-19 21:39:06
    1.字符编码有两种方式:定长编码和变长编码...(前缀码:任何一字符的编码都不是其他字符编码的前缀) 2.huffman编码思路:将要编码的字符做为二叉树的叶节点,根据其权重构造二叉树,二叉树根到叶节点的路径代表词

    1.字符编码有两种方式:定长编码和变长编码。定长编码如ASCII码,每一个字符都是由固定长度的二进制数据表示的。变长编码时,字符是可以由不同长度的二进制数据表示的。在变长编码时,为了保证解码时能有唯一的解码结果,编码必须为前缀码。(前缀码:任何一个字符的编码都不是其他字符编码的前缀)

    2.huffman编码思路:将要编码的字符做为二叉树的叶节点,根据其权重构造二叉树,二叉树根到叶节点的路径代表词叶节点字符的编码。明显huffman方法产生的编码是前缀码,因为任何两个由根到叶节点的路径A,B是不可能存在A属于B或B属于A情况的 ( 由于A,B叶节点不同,所以叶节点到其父节点的路径是肯定不会相同的 )。

    3.huffman编码思想:刚开始初始化n颗只有一个节点的树。不断从存在的树中选择权值最小的两颗构造成一颗新树,同时取代最小的这两颗,直到树构造完成。

    4.代码:


    展开全文
  •  URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之间的相互转换。在本文中,我们以使用URLDecoder解决GET请求中文乱码问题为场景说明 URLDecoder/URLEncoder 的...

    摘要:

      URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之间的相互转换。在本文中,我们以使用URLDecoder解决GET请求中文乱码问题为场景说明 URLDecoder/URLEncoder 的用法,并给出了 application/x-www-form-urlencoded MIME 字符串的编码规则。


    一. URLDecoder/URLEncoder 使用场景概述

      URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之间的相互转换。在介绍 application/x-www-form-urlencoded MIME 字符串之前,我们先考虑如下场景,如下图所示:

                URL.png-14.8kB

      我们知道,在我们向客户端发起请求时,浏览器会根据请求URL生成相应的请求报文发送给服务器。在这个过程中,如果我们在浏览器中的地址栏中所输入的URL包含中文字符时,浏览器首先会将这些中文字符进行编码然后再发送给服务器。实际上,浏览器会将它们转换为 application/x-www-form-urlencoded MIME 字符串,如下图所示:

                转码.png-48.7kB

      更确切的,当URL地址里包含非西欧字符的字符串时,浏览器都会将这些非西欧字符串转换成application/x-www-form-urlencoded MIME 字符串。在开发过程中,我们可能涉及将普通字符串和这种特殊字符串的相关转换,这就需要使用 URLDecoder 和 URLEncoder类进行实现,其中:

    • URLDecoder类包含一个decode(String s,String enc)静态方法,它可以将application/x-www-form-urlencoded MIME字符串转成普通字符串;

    • URLEncoder类包含一个encode(String s,String enc)静态方法,它可以将普通字符串转换成application/x-www-form-urlencoded MIME字符串。

    下面程序示范了普通字符串转与 application/x-www-form-urlencoded MIME 字符串之间的转化。

    public class URLDecoderTest {
        public static void main(String[] args) throws Exception {
    
            // 将application/x-www-form-urlencoded字符串转换成普通字符串
            // 其中的字符串直接从上图所示窗口复制过来,chrome 默认用 UTF-8 字符集进行编码,所以也应该用对应的字符集解码
            System.out.println("采用UTF-8字符集进行解码:");
            String keyWord = URLDecoder.decode("%E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6+Rico", "UTF-8");
            System.out.println(keyWord);
            System.out.println("\n 采用GBK字符集进行解码:");
            System.out.println(URLDecoder.decode("%E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6+Rico", "GBK"));
    
            // 将普通字符串转换成application/x-www-form-urlencoded字符串
            System.out.println("\n 采用utf-8字符集:");
            String urlStr = URLEncoder.encode("天津大学", "utf-8");
            System.out.println(urlStr);
            System.out.println("\n 采用GBK字符集:");
            String urlStr2 = URLEncoder.encode("天津大学", "GBK");
            System.out.println(urlStr2);
        }
    }/* Output: 
            采用UTF-8字符集进行解码:
            天津大学 Rico
    
            采用GBK字符集进行解码:
            澶╂触澶у Rico
    
            采用utf-8字符集:
            %E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6
    
            采用GBK字符集:
            %CC%EC%BD%F2%B4%F3%D1%A7
     *///:~

      特别地,仅包含西欧字符的普通字符串和application/x-www-form-urlencoded MIME字符串无须转换,而包含中文字符的普通字符串则需要转换,转换的方法是每个中文字符占2个字节,每个字节可以转换成2个十六进制的数字,所以每个中文字符将转换成“%XX%XX”的形式。当然,采用不同的字符集时,每个中文字符对应的字节数并不完全相同,所以使用URLEncoder和URLDecoder进行转换时也需要指定字符集。特别地,字符串应以同样的字符集进行编码和解码,否则会产生意想不到的结果,如上述程序示例所示。


    二. 解决GET请求中文乱码问题

      URLDecoder的一个应用场景就是解决GET请求的中文乱码问题,如下述代码所示:

    <%@page import="java.net.URLDecoder"%>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <%
            String param1 = request.getQueryString();
            String param2 = URLDecoder.decode(param1, "utf-8");
            out.print(param2.split("=")[1] + "<br>");
        %>
    </body>
    </html>

      特别需要注意的是,使用此方式对GET请求参数进行解码时,我们必须先对 request.getQueryString 方法的返回值(例如,“name=摩羯西门吹雪”)进行解码,然后再从中取出我们所需要的参数值。如果先取出参数值,然后再对参数值进行解码,则我们将得到乱码,如下图所示:

                乱码.png-21.5kB

      此外,对于包含中文字符的POST请求参数,我们只需在获取请求参数前通过以下代码语句进行转码即可:

        request.setCharacterEncoding("utf-8");

    三. URLEncoder & URLDecoder

      对 String 编码时,使用以下规则:

    • 字母、数字和字符, “a” 到 “z”、”A” 到 “Z” 和 “0” 到 “9” 保持不变;
    • 特殊字符 “.”、”-“、”*” 和 “_” 保持不变;
    • 空格字符 ” ” 转换为一个加号 “+”。

    除此之外,所有的其他字符都是不安全的。因此需要使用一些编码机制将它们转换为一个或多个字节,每个字节用一个包含 3 个字符的字符串 “%xy” 表示,其中 xy 为该字节的两位十六进制表示形式,推荐的编码机制是 UTF-8。例如,使用 UTF-8 编码机制,字符串 “The string ü@foo-bar” 将转换为 “The+string+%C3%BC%40foo-bar”,因为在 UTF-8 中,字符 ü 编码为两个字节,C3 (十六进制)和 BC (十六进制),字符 @ 编码为一个字节 40 (十六进制)。

     关于 URLDecoder 类的使用,转换过程正好与 URLEncoder 类使用的过程相反,此不赘述。


      关于JSP中文乱码更多的介绍,包括 页面乱码、参数乱码、表单乱码、源文件乱码 等知识,见我的另外两篇博客:《JSP中文乱码问题终极解决方案(上)》《JSP中文乱码问题终极解决方案(下)》


    引用

    使用URLDecoder和URLEncoder对中文进行处理

    展开全文
  • js对字符进行编码方法总结

    千次阅读 2016-05-13 11:12:51
    在用javascriptURL字符进行编码中,虽然escape()、encodeURI()、encodeURIComponent()三种方法都能一些影响URL完整性的特殊字符进行过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至...
    在用javascript对URL字符串进行编码中,虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问题。例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是UTF-8),使用escape()转换传输中文字串就会出现乱码问题。 
    
    

    以下是JS下对URL进行编/解码的各种方法: 
    1、escape  方法:返回一个可在所有计算机上读取的编码  String  对象。 
    function  escape(charString  String)  String 
    不会被此方法编码的字符: 
    说明:escape  方法返回一个包含  charstring  内容的字符串值(Unicode  格式)。所有空格、标点、 
    重音符号以及任何其他非  ASCII  字符都用  %xx  编码替换,其中  xx  等于表示该字符的十六进制数。 
    例如,空格返回为“%20”。(字符值大于  255  的字符以  %uxxxx  格式存储。) 
    注意:escape  方法不能用来对“统一资源标识符”(URI)  进行编码。对其编码应使用  encodeURI  和encodeURIComponent  方法。 

    2、encodeURI  方法:返回编码为有效的统一资源标识符  (URI)  的字符串。 
    function  encodeURI(URIString  String)  String 
    不会被此方法编码的字符:! 
    说明:encodeURI  方法返回一个已编码的  URI。如果将编码结果传递给  decodeURI,则将返回初始的字符串。encodeURI  不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用 
    encodeURIComponent  对这些字符进行编码。 

    3、encodeURIComponent  方法:返回编码为统一资源标识符  (URI)  的有效组件的字符串。 
    function  encodeURIComponent(encodedURIString  String)  String 
    不会被此方法编码的字符:! 
    说明:encodeURIComponent  方法返回一个已编码的  URI。如果将编码结果传递给decodeURIComponent,则将返回初始的字符串。因为  encodeURIComponent  方法将对所有字符编码, 
    请注意,如果该字符串代表一个路径,例如  /folder1/folder2/default.html,则其中的斜杠也将被编码,这样,当该字符串作为请求发送到  Web  服务器时它将是无效的。如果字符串中包含多个  URI  组件,请使用  encodeURI  方法进行编码。 

    4、unescape  方法:从用  escape  方法编码的  String  对象中返回已解码的字符串。 
    function  unescape(charString  String)  String 
    说明:unescape  方法返回一个包含  charstring  内容的字符串值。所有以  %xx  十六进制形式编码的 
    字符都用  ASCII  字符集当中等效的字符代替。(以  %uxxxx  格式(Unicode  字符)编码的字符用十六 
    进制编码  xxxx  的  Unicode  字符代替。) 
    注意:unescape  方法不应用于解码“统一资源标识符”(URI)。请改用  decodeURI  和  decodeURIComponent  方法。 

    5、decodeURI  方法:返回一个已编码的统一资源标识符  (URI)  的非编码形式。 
    function  decodeURI(URIstring  String)  String 
    decodeURIComponent  方法:返回统一资源标识符  (URI)  的一个已编码组件的非编码形式。 
    function  decodeURIComponent(encodedURIString  String)  String 
    BTW:C#中对URL编码的方法。。。 
    编码:Server.UrlEncode(string) 

    解码:Server.UrlDecode(string) 前面三种客户端编码都可以用这个方法在后台解码。


    转载自:http://www.cnblogs.com/Miton/archive/2011/07/25/2116292.html

    展开全文
  • 拨开字符编码的迷雾--字符编码概述

    万次阅读 2017-11-27 20:46:23
    相信不少人在字符编码上面摔过跟头,这篇文章针对开发中需要了解的字符编码知识进行了简要的讲解,希望能够大家有所帮助。 1. ASCII及其扩展 1.1 什么是ASCII字符集 字符集就是一系列用于显示的字符的...
  • 在请求中如果url包括特殊字符的话,可能会导致接口接收参数失败,所以...整个url进行编码,会避开url中的功能性字符,例如,&amp; ? [ ] 编码前:http://10.10.67.67:8080/api/chain/basic/users?params=+[...
  • 对字符进行哈夫曼编码和解码

    千次阅读 2019-01-30 10:41:03
    通过查询文件中的字符以及各个字符的权值(出现次数),某个字符进行哈夫曼编码和解码,比如 文件中字符和权值如下: A 10  B 15 C 12 D 21 E 25 F 50 代码则会通过生成哈夫曼二叉树计算出各个字符编码,...
  • 利用matlab自带函数对字符进行Huffman编码
  • 编码字符集与字符编码

    千次阅读 2019-02-17 12:38:57
    ASCII:最先出现的编码字符集,包含了大小写的从A到Z和符号,用8位表示,共258个字符,老美一开始只固定了前127个字符(称为半角),而后面127个字符是在计算机在其他欧美国家开始使用时扩展的,是扩展字符集(全角)。...
  • 拨开字符编码的迷雾--字符编码转换

    万次阅读 2017-11-27 21:22:09
    1. Windows API介绍本文介绍使用Windows API进行字符编码的转换,涉及WideCharToMultiByte和MultiByteToWideChar2API, API接口名中的MultiByte对应着多字节编码,如ASCII、UTF-8等都是多字节编码,而WideChar...
  • 汉字字符编码查询 unicode编码查询

    万次阅读 2018-09-13 09:04:06
    查询网址:   ...   查询示例: ...常见的汉字字符编码: ...GB2312汉字采用双字节编码,收录7445图形字符,其中包括6763汉字。 BIG5编码:台湾地区繁体中文标准字符集,采用双字节编码,共收录13053...
  • 字符编码与Python 3编码

    千次阅读 2016-05-05 22:04:01
    对编码字符编码方式进行总结,同时简单介绍了Python 3中的字符编码方式
  • 字符编码那些事--彻底理解掌握编码知识

    万次阅读 多人点赞 2020-05-04 16:42:33
    每一程序员都不可避免的遇到字符编码的问题,很多人在字符编码方面同样遇到不少问题,而且一直各种编码懵懵懂懂、不清不楚。这篇文章就是针对字符编码中的一些问题进行了详细的阐述,能从根本上理解字符编码
  • 问题起因是利用Nginx做反向代理的时候,需要访问如下链接 ... 其中192.168.14.141被反向代理到了192.168.14.141:8090 ... 即便是手动将+号编码,但是Nginx貌似会进行解码,最后发送出去的请求仍然是没有编码的。
  • JSURL字符进行编码/解码分析

    万次阅读 2016-10-15 15:42:13
    一、为什么要进行js编码和解码?   只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*'(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。 出现的情况:   网址路径中包含汉字 ...
  • 如何将字符进行Huffman编码

    千次阅读 2019-01-23 08:44:56
    1、将每个字符字符串中的出现频率进行从小到大统计: a:3 b:2 l:1 i:1 2、构建依据频率的带权重的二叉树: 3、根据二叉树读出每个字符的Huffman码: a:0 b:11 l:100 i:101 4、将上面的Huffman码替换掉原来的...
  • 字符编码小记

    千次阅读 2016-02-03 14:19:54
    字符编码”分为 字符集 和 编码方案 两含义。
  • 字符编码问题,给一段字符串,对字符进行编码,要求是该字符串的编码长度最短。 解决问题的思路: 1.统计每个字符字符串出现的次数; 2.构造哈夫曼树,常规构造哈夫曼树的思想就是将整个哈夫曼树构造出来,...
  • C++与字符集、字符编码

    千次阅读 2019-11-02 10:50:06
    字符编码 字符集与字符编码的关系 多种字符编码存在的意义 字符编码的发展历史 活动代码页 c++的多字节字符与宽字节字符 c++的多字节字符串与宽字节字符串 C++程序输出字符串的编码 字符串常量 参考文章 ...
  • Nginx 对字符编码函数解析

    千次阅读 2016-12-25 17:35:21
    Nginx函数ngx_escape_uri非普通字符进行编码转换,源码如下:ngx_escape_uri(u_char *dst, u_char *src, size_t size, ngx_uint_t type) { ngx_uint_t n; uint32_t *escape; static u_char hex[] = "012345678
  • JSURL字符进行编码/解码分析

    千次阅读 2010-12-08 11:04:00
    节约时间,先写出总结,推荐使用encodeURIComponent()来URL进行编码。虽然escape()、encodeURI()、encodeURIComponent()三种方法都能一些影响URL完整性的特殊 字符进行过滤。但后两者是将字符串...
  • javascript中存在几种URL字符进行编码的方法 javascript中存在几种URL字符进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。 escape() 方法: 采用ISO ...
  • java对字符编码处理

    万次阅读 2012-07-20 16:44:22
    本文转自http://kxjhlele.iteye.com/blog/333211,讲述了java中对字符编码处理  在java应用软件中,会有多处涉及到... 这是java字符串处理的一标准函数,其作用是将字符串所表示的字符按照charset编码,并以字
  • 一. MySQL字符集和校对规则...字符集和校对规则是一多的关系。每种字符集都有一默认校对规则。查看数据库支持的字符集: # 方法1: SHOW CHARACTER SET;# 方法2: USE information_schema; SELECT * FROM CHARACTER
  • Python笔记-对字符进行URL编码及解码

    千次阅读 多人点赞 2020-04-11 19:23:46
    这里主要是记录下在HTTP封包中URL编码中的解析与编码 代码模板如下: from urllib import parse if __name__ == '__main__': ...... commitStr = parse.quote("嘤嘤嘤") print(parse.unquote(commitStr)) .....
  • 单字节编码: 双字节编码: 多字节编码
  • 首先创建一哈夫曼树,以字符出现的次数为标准创建;使用List类存放所创建的节点,后面方便进行删除,获得哈夫曼树的根节点,用Map统计对应的字符出现的次数 //创建一节点,需要实现Comparable类,进行比较 ...
  • C++ Windows平台字符编码转换

    万次阅读 2017-11-01 00:38:23
    本文介绍使用Windows API进行字符编码的转换,涉及WideCharToMultiByte和MultiByteToWideChar2API, API接口名中的MultiByte对应着多字节编码,如ASCII、UTF-8等都是多字节编码,而WideChar字面意思是宽字符,在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,158,425
精华内容 463,370
关键字:

对五十个字符进行编码