`
mingren135
  • 浏览: 72449 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

字符串的encode/escape

 
阅读更多

 遇到中文decode的问题,从cookie中拿到urlencode的值是中文,在urldecode时发现中文的最后1个字丢失,通过打日志最终定位到是字符编码的问题。

//不带charset参数的decode,不建议使用。。。
@Deprecated
public static String decode(String s)
Deprecated. The resulting string may vary depending on the platform's default encoding. Instead, use the decode(String,String) method to specify the encoding.

 

//带charset参数的decode
public static String decode(String s,
            String enc)
                     throws UnsupportedEncodingException
Decodes a application/x-www-form-urlencoded string using a specific encoding scheme. 
如果是utf-8编码的,则:String nick = URLDecoder.decode(nick, "UTF-8");

 

一、URLEncoder/URLDecoder:两个函数分别用于编码 URL 字符串和解码已编码的 URL 字符串,主要是实现对中文字符的编码,原理是把中文字符转换为十六进制并按某种规则进行字符串组合,实现字符的编码与解编码,保证URL数据传递过程中文字符的完整性和兼容性。

测试中文
-->
GB2312编码:%B2%E2%CA%D4%D6%D0%CE%C4
UTF-8编码:%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87
------------------------------------------------
~!@#$%^&*()_+|\\=-,./?><;'][{}\"
-->
%7E%21%40%23%24%25%5E%26%2A%28%29_%2B%7C%5C%3D-%2C.%2F%3F%3E%3C%3B%27%5D%5B%7B%7D%22

 
 二、escape/unescape:js有该方法,附件是对应java的实现

1)escape对String 对象编码以便它们能在所有计算机上可读

说明 : escape 方法返回一个包含了charstring内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以 及 其他非 ASCII字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是"%20 " 。 字符值大于 255 的以 %uxxxx 格式存储。

注意 :escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI和encodeURIComponent 方法。 

 

2)unescape解码用 escape 方法进行了编码的 String 对象。 

说明 : unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的字符都用 ASCII 字符集中等价的字符代替。 以 %uxxxx 格式(Unicode 字符)编码的字符用十六进制编码 xxxx 的 Unicode 字符代替. 

注意 : unescape 方法不能用于解码统一资源标识码 (URI)。解该码可使用 decodeURI 和decodeURIComponent 方法。 

测试中文
-->
escape编码:%u6D4B%u8BD5%u4E2D%u6587
-------------------------------------
~!@#$%^&*()_+|\=-,./?><;'][{}"
-->
%7e%21%40%23%24%25%5e%26%2a%28%29%5f%2b%7c%5c%3d%2d%2c%2e%2f%3f%3e%3c%3b%27%5d%5b%7b%7d%22

 

 

 

分享到:
评论

相关推荐

    ORACLE字符串函数

    11. 字符串 SQL 正则表达式匹配函数:`substring(string from pattern for escape)` 该函数用于根据 SQL 正则表达式截取字符串中的子串。例如,`substring('Thomas' from '%#"o_a#"_' for '#')`将返回`'omat'`。 ...

    PHP 笔记001 - 字符串、正则表达式

    - `mysql_real_escape_string` 和 `mysql_escape_string`:这两个函数用于转义SQL字符串中的特殊字符。`mysql_real_escape_string`还会判断字符集,而`mysql_escape_string`不会。 - `base64_encode` 和 `base64_...

    ZzJavaScript encode and escape functions

    最后,escape函数也用于对字符串进行转义处理,它通常用于JavaScript字符串。然而,需要注意的是,随着ECMAScript 5的发布,escape函数已被废弃,推荐使用encodeURI和encodeURIComponent进行替代。这是因为escape...

    js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解

    `escape()`函数的主要作用是对字符串进行编码,使得该字符串能在所有计算机上正确读取。它的语法是`escape(string)`,其中`string`是需要被编码的字符串。返回的是已编码的字符串副本,一些字符被替换为十六进制的...

    PHP和JS字符串处理函数.pdf

    `escape()`和`unescape()`是JavaScript的老式字符串编码和解码方法,它们用十六进制转义序列来替换某些字符,不过现在通常推荐使用`encodeURIComponent()`和`decodeURIComponent()`。 总结起来,PHP和JavaScript都...

    python中将\\uxxxx转换为Unicode字符串的方法

    在Python 3中,可以使用encode和decode方法来处理Unicode字符串的转换问题。例如,将Unicode字符串编码为字节序列,然后再解码回字符串,可以实现类似的效果: ```python text = "这是一个Unicode字符串" encoded_...

    python 遍历字符串(含汉字)实例详解

    在Python编程语言中,遍历字符串是一项基本操作,尤其在处理包含汉字的字符串时,需要特别注意字符编码的问题。本篇文章将深入讲解如何在Python中遍历字符串,包括含有汉字的字符串,以及涉及的不同编码方式。 首先...

    java版本的escape和unescape函数

    `escape`函数通常用于将字符串中的特殊字符转换为它们的转义序列。例如,在JavaScript中,`\n`表示换行,`\t`表示制表符。如果你需要在网络上传输这样的字符串,或者将其写入到HTML或XML文档中,原始的特殊字符可能...

    xe5 android Escape UnicodeString to String

    例如,你可以使用`StandardCharsets.UTF_8.decode()`和`.encode()`方法来转换字符串到字节流,然后再转换回来。 总的来说,"xe5 android Escape UnicodeString to String"是一个关于Android开发中字符串编码处理的...

    utf8-regex-encode-decode-js:Utf8字符串使用正则表达式进行编码

    UTF8字符串使用正则表达式进行编码/解码 代码基于 可以将javascript Unicode字符串编码为utf-8多个单字节字符。 可以通过unescape(encodeURIComponent(str))在JavaScript中实现相同的功能,但是这种方法在其他语言...

    js中encode、decode的应用说明.docx

    JavaScript中的`encode`和`decode`是一组用于字符串编码解码的方法,它们在处理和传输数据时起到关键作用。在JavaScript中,常见的编码方法有`encodeURIComponent`、`decodeURIComponent`、`encodeURI`、`decodeURI`...

    rust-htmlescape —编码/解码HTML实体-Rust开发

    并使用htmlescape :: {相关功能在这里}; 是用于RustHTML实体编码库示例用法所有...### Encoding htmlescape :: encode_minimal()使用最少HTML实体集对输入字符串进行编码。 let title =“猫狗”; 让标签=格式!(

    深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例

    JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape, decodeURI, decodeURIComponent 。 下面简单介绍一下它们的区别: 1 escape()函数 定义和...

    javascript 字符 Escape,encodeURI,encodeURIComponent

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

    关于Python字符串显示u...的解决方式

    - 可以通过`.encode('utf-8')`方法将字符串从Unicode编码转换为UTF-8编码。 - 示例代码如下: ```python number = "number" encoded_number = number.encode('utf-8') print(encoded_number) # 输出结果为 b'...

    JS中三种编码方式(escape,encodeURI,encodeURIComponent)

    在JavaScript中,编码是处理字符串以确保它们在网络中正确传输的关键环节。主要涉及到三种编码方法:`escape()`,`encodeURI()` 和 `encodeURIComponent()`。这些方法各有不同的应用场景和规则,理解它们之间的区别...

    PHP实现JS中escape与unescape的方法

    第一个函数escape接受一个字符串参数,将其转换为JSON格式的字符串,然后利用str_replace函数将JSON字符串中的反斜杠替换为百分号%,接着使用substr函数去掉字符串首尾的双引号,最终返回转换后的字符串。...

    utf8转unicode

    首先,我们可以使用`encode`将字符串从UTF-8编码转换为字节流,然后使用`decode`将字节流解码为Unicode字符串。代码示例如下: ```python # 假设s是UTF-8编码的字符串 s = "你好,世界" # 将UTF-8编码的字符串转换...

Global site tag (gtag.js) - Google Analytics