中文网页编解码问题

DemocracyandScience DemocracyandScience     2022-08-03     471

关键词:

0、说明:

0.1、首先是unicode转义字符

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

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

java编码与解码

...标准信息交换表ISO8859-1:拉丁码表,欧洲码表GB2312:中国的中文编码表GBK:中国的中文编码表升级GB18030:GBK的取代版本BIG5:通 查看详情

java使用urlencoder.encode和urldecoder.decode编解码(utf-8)中文及特殊字符

本文主要介绍Java中,使用URLEncoder.encode和URLDecoder.decode对url地址链接中,中文字符及特殊字符用UTF-8字符集进行编码和解码的方法,及相关的示例代码。原文地址:https://www.cjavapy.com/article/709/ 查看详情

摩斯码编解码器(代码片段)

...易的摩斯编解码器。2、编解码设计  自己玩儿,暂定中文摩斯编码。基本思想是,将汉字对应的四位区位码数字分别编码为数字对应的摩斯码,一个中文对应20位摩斯码。解码过程逆向。3、代码实现   查看详情

OpenCV videoWriter编解码器问题

】OpenCVvideoWriter编解码器问题【英文标题】:OpenCVvideoWritercodecissue【发布时间】:2013-11-3012:48:48【问题描述】:我正在尝试在Windows中使用OpenCV编写视频,并且在选择编解码器时遇到了各种问题。我不确定它是否在我的代码中,或... 查看详情

“ascii”编解码器无法编码字符:序数不在范围内(128)

...:51【问题描述】:我正在使用selenium和beautifulsoup抓取一些网页。我正在遍历一堆链接,获取信息,然后将其转储到JSON中:foreventinevents:case=\'Artist 查看详情

MySQLDB 'utf-8' 编解码器的问题无法解码字节 0x92

】MySQLDB\\\'utf-8\\\'编解码器的问题无法解码字节0x92【英文标题】:IssuewithMySQLDB\'utf-8\'codeccan\'tdecodebyte0x92MySQLDB\'utf-8\'编解码器的问题无法解码字节0x92【发布时间】:2020-06-0815:26:18【问题描述】:我在使用MySQLdb运行查询时遇到问... 查看详情

ffmpeg中的音频编解码器问题

】ffmpeg中的音频编解码器问题【英文标题】:Issuewithaudiocodecinffmpeg【发布时间】:2021-07-1210:37:01【问题描述】:据我所知,我认为这是一个音频编解码器问题,但是由于我对ffmpeg并不熟悉,所以任何事情都可能出错。W:\\PICTURES\\\... 查看详情

Python Beautiful Soup 'ascii' 编解码器无法编码字符 u'\xa5'

...\'\\xa5\'【发布时间】:2015-06-2316:04:12【问题描述】:我在网页抓取页面的某 查看详情

pycharm编码问题?

如图,因为代码里有中文,所以出现'utf-8'codeccan'tdecodebyte0xd7inposition10:invalidcontinuationbyte语句。然后先改成了#-*-coding:gb2312-*-和encoding='gb2312',又试过#-*-coding:gbk-*-,encoding='gbk'为什么还是会返回'utf-8'codecca... 查看详情

网页post和get方法中的中文乱码问题详解

1.gb2312、gbk、iso8859-1、utf8  面对中文乱码的时候首先要解决为什么会乱码?乱码的本质是用来解码的方式不对,而且乱码一般只会出现在中文等语言中。我们常见的就是标题中的四种编码,这四种编码的区别和历史... 查看详情

关于多媒体编解码器的概念(容器、格式、编解码器、复用器、解复用器)[关闭]

】关于多媒体编解码器的概念(容器、格式、编解码器、复用器、解复用器)[关闭]【英文标题】:ConceptaboutMultimediaCodecs(Container,Format,Codec,Muxer,Demuxer)[closed]【发布时间】:2012-04-1422:50:58【问题描述】:上周我研究了很多多媒体... 查看详情

Spotify 流媒体 - 无线蓝牙编解码器

】Spotify流媒体-无线蓝牙编解码器【英文标题】:SpotifyStreaming-WirelessBluetoothCodec【发布时间】:2014-11-1700:34:05【问题描述】:据我了解,通过蓝牙流式传输是通过A2DP配置文件处理的。虽然SBC编解码器是默认的,但A2DP支持AAC、MP3... 查看详情

“utf-8”编解码器无法解码字节 - Python

】“utf-8”编解码器无法解码字节-Python【英文标题】:\'utf-8\'codeccan\'tdecodebyte-Python【发布时间】:2020-07-1719:06:23【问题描述】:我的Django应用程序同时使用.txt和.doc文件类型。此应用程序会打开一个文件,将其与db中的其他文件... 查看详情

FFmpeg 支持的所有编解码器和格式是啥?

】FFmpeg支持的所有编解码器和格式是啥?【英文标题】:WhatareallcodecsandformatssupportedbyFFmpeg?FFmpeg支持的所有编解码器和格式是什么?【发布时间】:2011-03-2313:57:18【问题描述】:我需要FFmpeg支持的编解码器和格式列表。我在哪里... 查看详情

Python/Flask:UnicodeDecodeError/UnicodeEncodeError:“ascii”编解码器无法解码/编码

】Python/Flask:UnicodeDecodeError/UnicodeEncodeError:“ascii”编解码器无法解码/编码【英文标题】:Python/Flask:UnicodeDecodeError/UnicodeEncodeError:\'ascii\'codeccan\'tdecode/encode【发布时间】:2017-03-0106:55:27【问题描述】:很抱歉关于这个问题的第10... 查看详情

WAVEFORMATEX - 最后如何读取编解码器数据?

】WAVEFORMATEX-最后如何读取编解码器数据?【英文标题】:WAVEFORMATEX-howtoreadcodecdataattheend?【发布时间】:2010-06-0107:48:24【问题描述】:我有一个WAVEFORMATEX结构,其末尾有一些编解码器数据(10个字节)。我正在使用C++。最后如何... 查看详情

将 LocalDateTime 转换为 Cassandra TIMESTAMP 时的编解码器问题

】将LocalDateTime转换为CassandraTIMESTAMP时的编解码器问题【英文标题】:CodecIssuewhileconvertingLocalDateTimetoCassandraTIMESTAMP【发布时间】:2020-12-0306:24:19【问题描述】:我有如下POJO属性,@Column(name="timeStamp")privateLocalDateTimetimeStamp;这个属... 查看详情

地址错误:(unicode error)'unicodeescape'编解码器无法解码

】地址错误:(unicodeerror)\\\'unicodeescape\\\'编解码器无法解码【英文标题】:Addresserror:(unicodeerror)\'unicodeescape\'codeccan\'tdecode地址错误:(unicodeerror)\'unicodeescape\'编解码器无法解码【发布时间】:2018-04-1115:24:27【问题描述】:当... 查看详情