中文网页编解码问题

0、说明:

0.1、首先是unicode转义字符

在涉及Web前端开发时, 有时会遇到\uXXXX格式表示的字符, 其中XXXX是16进制数字的字符串表示形式, 在js中这个叫Unicode转义字符, 和\n \r同属于转义字符. 在其他语言中也有类似的, 可能还有其它变形的格式.

0.2、url编码/百分比编码

HTTP 請求參數,必須使用請求參數名稱與請求參數值,中間以等號(=)表示成對關係,現在問題來了,如果請求參數值本身包括=符號怎麼辦?又或許你想發送的請求 參數值是「http://openhome.cc」這個值呢?假設是GET請求,你不能直接這麼在網址列上鍵入:http://openhome.cc/addBookmar.do?url=http://openhome.cc

在URI的規範中定義了一些保留字元(Reserved character),像是「:」、「/」、「?」、「&」、「=」、「@」、「%」等字元,在URI中都有它的作用,如果你要在請求參數上表達URI中的保留字元,必須在%字元之後以十六進位數值表示方式,來表示該字元的八個位元數值。

例如,「:」字元真正儲存時的八個位元為00111010,用十六進位數值來表示則為3A,所以必須使用「%3A」來表示「:」,「/」字元儲存時的八個 位元為00101111,用十六進位表示則為2F,所以必須使用「%2F」來表示「/」字元,所以想發送的請求參數值是「http: //openhome.cc」的話,則必須使用以下格式:http://openhome.cc/addBookmar.do?url=http%3A%2F%2Fopenhome.cc。這是URI規範中的百分比編碼(Percent-Encoding),也就是俗稱的URI編碼或URL編碼。

1、16进制解码

static final Pattern reUnicode = Pattern.compile("\\\\u([0-9a-zA-Z]{4})");

public static String decode(String s) {

Matcher m = reUnicode.matcher(s);

StringBuffer sb = new StringBuffer(s.length());

while (m.find()) {

m.appendReplacement(sb,

Character.toString((char) Integer.parseInt(m.group(1), 16)));

}

m.appendTail(sb);

return sb.toString();

}

2、然后网页解码

URLDecoder.decode(url,"UTF-8")

3、综合就是

decode( URLDecoder.decode(url,"UTF-8"))

4、参考文献

http://netwjx.github.io/blog/2012/07/07/encode-and-decode-unicode-escape-string/

http://openhome.cc/Gossip/Encoding/URLEncoding.html

时间: 2024-10-11 20:54:38

中文网页编解码问题的相关文章

中文编解码问题

在做EIP审批接口是遇到中文编解码问题,现在将编解码过程记录如下: 前端Javascript: encodeURIComponent(string) 后端Java: string = new String(string.getBytes("ISO8859-1"), "UTF-8"); 附注(引用地址:http://blog.csdn.net/kalision/article/details/8640793): 发现原来在对后台java程序里的string赋值的时候,

中文编解码,可用于存中文或者编码具体参数的作用,防止被知道

1 BASE64Encoder base64=new BASE64Encoder(); 2 String encoderStr=base64.encode(string.getBytes("utf-8")); 3 System.out.println(encoderStr); 4 5 BASE64Decoder base64decoder=new BASE64Decoder(); 6 byte b[]=base64decoder.decodeBuffer(encoderStr); 7

url 中文编解码

unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, Web.HT

视音频编解码基本术语及解释

摘要:          整理了一些基本视音频术语,用于入门和查询使用. H264: H264是视频的标准,是MPEG4-10,基于内容的高效编码方式. H.264/MPEG-4第10部分,或称AVC(AdvancedVideo Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制.压缩和发布格式.第一版标准的最终草案于 整理了一些基本视音频术语,用于入门和查询使用. H264: H264是视频的标准,是MPEG4-10,基于内容的高效编码方式. H.264/MPE

详解音频编解码的原理、演进和应用选型等

本文来自网易云音乐音视频实验室负责人刘华平在LiveVideoStackCon 2017大会上的分享,并由LiveVideoStack根据演讲内容整理而成(本次演讲PPT文稿,请从文末附件下载). 1.引言 大家好,我是刘华平,从毕业到现在我一直在从事音视频领域相关工作,也有一些自己的创业项目,曾为早期Google Android SDK多媒体架构的构建作出贡献. 就音频而言,无论是算法多样性,Codec种类还是音频编解码复杂程度都远远比视频要高.视频的Codec目前还主要是以宏块为处理单元,预

各种音视频编解码学习详解

各种音视频编解码学习详解 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等.最近因为项目的关系,需要理清媒体的codec,比较搞的是,在豆丁网上看运营商的规范 标准,同一运营商同样的业务在不同文档中不同的要求,而且有些要求就我看来应当是历史的延续,也就是现在已经很少采用了.所以豆丁上看不出所以然,从 wiki上查.中文的wiki信息量有限,很短,而wiki的英文内容内多,删减版

FFMPEG视音频编解码零基础学习方法-b

感谢大神分享,虽然现在还看不懂,留着大家一起看啦 PS:有不少人不清楚“FFmpeg”应该怎么读.它读作“ef ef em peg” 0. 背景知识 本章主要介绍一下FFMPEG都用在了哪里(在这里仅列几个我所知的,其实远比这个多).说白了就是为了说明:FFMPEG是非常重要的. 使用FFMPEG作为内核视频播放器: Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音... 使用FFMPEG作为内核的Directshow Filter: ffdshow,lav fil

字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)

好文分享UTF-8, 字符集, 编解码 (关于字符编码的深入解释,请参见我的原创文章<关于字符编码,你所需要知道的>.) 此文为转载,有少许修订,原文出处不详. 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节". 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出更多的状态,状态开始变来变去.他们看到这样是好的,于是它们就这机器称为"

FFMPEG视音频编解码零基础学习方法

在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“大神”和初学者之间好像有一个不可逾越的鸿沟.“大神”们水平高超,探讨着深奥的问题:而初学者们还停留在入门阶段.究竟是什么原因造成的这种“两极分化”呢?最后,我发现了问题的关键:FFMPEG难度比较大,却没有一个循序渐进,由简单到复杂的教程.现在网上的有关FFMPEG的教程多半难度比较大,不太适合刚接