1. 程式人生 > >decodeURI解碼,由URIEncoder.encode("","GBK")編碼的中文,問題解決

decodeURI解碼,由URIEncoder.encode("","GBK")編碼的中文,問題解決

一、js內建編碼,解碼函式的介紹:

@.JavaScript中有三個可以對字串編碼的函式,分別是: escape,encodeURI,encodeURIComponent,相應3個解碼函式:

    unescape,decodeURI,decodeURIComponent 。

使用介紹:

escape()函式
定義和用法
1 escape() 函式可對字串進行編碼,這樣就可以在所有的計算機上讀取該字串。
語法
escape(string)
引數 描述
string 必需。要被轉義或編碼的字串。
返回值
已編碼的 string 的副本。其中某些字元被替換成了十六進位制的轉義序列。
說明
該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。其他所有的字元都會被轉義序列替換。




2 encodeURI()函式 decodeURI() 函式
定義和用法
encodeURI() 函式可把字串作為 URI 進行編碼(decodeURI解碼)。
語法
encodeURI(URIstring)
引數 描述
URIstring 必需。一個字串,含有 URI 或其他要編碼的文字。
返回值
URIstring 的副本,其中的某些字元將被十六進位制的轉義序列進行替換。
說明
該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。
該方法的目的是對 URI 進行完整的編碼,因此對以下在 URI 中具有特殊含義的 ASCII 標點符號,encodeURI() 函式是不會進行轉義的:;/?:@&=+$,#

3 encodeURIComponent() 函式/ decodeURIComponent() 函式

定義和用法
encodeURIComponent() 函式可把字串作為 URI 元件進行編碼( decodeURIComponent() 解碼)。
語法
encodeURIComponent(URIstring)
引數 描述
URIstring 必需。一個字串,含有 URI 元件或其他要編碼的文字。
返回值
URIstring 的副本,其中的某些字元將被十六進位制的轉義序列進行替換。
說明
該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。
其他字元(比如 :;/?:@&=+$,# 這些用於分隔 URI 元件的標點符號),都是由一個或多個十六進位制的轉義序列替換的。
提示和註釋
提示:請注意 encodeURIComponent() 函式 與 encodeURI() 函式的區別之處,前者假定它的引數是 URI 的一部分(比如協議、主機名、路徑或查詢字串)。

因此 encodeURIComponent() 函式將轉義用於分隔 URI 各個部分的標點符號。

注意點:

1  encodeURI和decodeURI 主要用於URL(網址)的編碼、解碼,是JavaScript的自身函式,採用UTF-8編碼格式對指定的字串進行編碼或解碼

說明:

  本項功能只是用於 encodeURI編碼和decodeURI解碼 的對照,可以識別和研究網址<URL地址>中被編碼過的漢字。
  encodeURI函式不能編碼的字元:@ ~ ! @ # $ & * ( ) _ + : ? - = ; ' , . / 英文 數字
  由於目前各國網頁字符集的不同造成了URL編碼的多種形式,例如 GBK和UTF 這2種字符集的網頁中漢字URL編碼方式就不一樣。
 encodeURI編碼和decodeURI解碼只能針對UTF-8字符集的網頁,不能識別GBK網頁編碼過的漢字編碼。

2  encodeURIComponent和decodeURIComponent 主要用於URL(網址)的編碼、解碼,是JavaScript的自身函式,

採用UTF-8編碼格式對指定的字串進行編碼或解碼。

與encodeURI和decodeURI的區別:

說明:

  本項功能只是用於 encodeURIComponent編碼和decodeURIComponent解碼 的對照,可以識別和研究網址<URL地址>中被編碼過的漢字。
  encodeURIComponent函式相對於encodeURI函式來說,可以對更多的字元進行編碼,
     包括:@ # $ & + : ? = ; , / 等字元。

  encodeURIComponent函式不能編碼的字元:@ ~ ! * ( ) _ - ' . 英文 數字

  由於目前各國網頁字符集的不同造成了URL編碼的多種形式,例如 GBK和UTF 這2種字符集的網頁中漢字URL編碼方式就不一樣。
 encodeURIComponent編碼和decodeURIComponent解碼只能針對UTF-8字符集的網頁,不能識別GBK網頁編碼過的漢字編碼。

總結:由上得知js再進行解碼中文時,只能解碼由utf-8格式編碼的中文;如果解碼GBK格式編碼的中文,js會丟擲“被解碼的 URI 不是合法的編碼“的異常;


具體解決方案有待研究,,如果有大牛已經有了解決方法,希望留言,,,,,,


相關推薦

decodeURI解碼,URIEncoder.encode("","GBK")編碼中文,問題解決

一、js內建編碼,解碼函式的介紹: @.JavaScript中有三個可以對字串編碼的函式,分別是: escape,encodeURI,encodeURIComponent,相應3個解碼函式:     unescape,decodeURI,decodeURIComponent

JS decodeURI解碼Java URLEncoder.encode編碼的字串不完全的問題

       最近有個需求:要將App從後臺介面獲取到的Json資料,按條件完整返回給H5頁面做顯示。        由於在Json資料中包含許多的中文,所以在Java程式碼中,只能先用URLEnc

hadoop讀取GBK編碼檔案解決之道!

package com.zuidaima.util; import java.io.UnsupportedEncodingException; /** * 轉換字串的編碼 */ public class ChangeCharset { /** 7位ASCII字元,也

python中文編碼問題(decode('gbk').encode('utf-8')和decode('utf-8').encode('gbk')這對好基友)

    想必每個Python新手都會遇到Python編碼的問題,特別是使用到漢字的時候。UTF-8編碼是比較通用的編碼方式,它可以輸出中文,而Python2中預設的編碼方式一般是GBK,所以往往我們期

asp對中文編碼解碼,Decode和Encode中文網址處理

<%'-------------------------------------------------------------------------- '=======================================================

js對中文進行gb2312/gbk編碼解碼

有一個js編碼庫壓縮包需要下載:點選開啟連結下載上面的壓縮檔案解壓得到gbk.js檔案,倒入gbk.js類庫,呼叫$URL.encode將內容編碼為gb2312字串,呼叫decode解碼gb2312 url編碼為對應內容。<script type="text/javas

python中編碼解碼decode和encode的使用

python encode decode python 在處理字符串時經常遇到編碼錯誤,導致亂碼,且python 2.x和 python 3.x之間有很大的不同,先在這裏記錄一下,以後整理;轉載 文章一篇:http://www.cnblogs.com/evening/archive/2012/04

python編碼問題——解決python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

從網上抓了一些位元組流,想打印出來結果發生了一下錯誤: UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xbb’ in position 8530: illegal multibyte sequenc

Sublime Text 3中編譯執行java 控制檯中文GBK編碼亂碼

方法一:開啟Sublime Text 3,依次點選Tool,Build System,New Build System..., 然後用文字編譯器開啟,貼上下面的程式碼並儲存為JavaC.sublime-build,最後關閉檔案。 或者是開啟Sublime Text 3,依次點選Pref

python中文編碼問題解決UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-14: ordinal n

編碼報錯: https://www.baidu.com/s?wd=渴望飛的魚 UnicodeEncodeError: 'ascii' codec can't encode characters in

JAVA 編碼中文問題系統透徹講解 UNICODE GBK UTF-8 ISO-8859-1 之間的區別

宣告 目錄 步驟 1 : 編碼概念 步驟 2 : 常見編碼 步驟 3 : UNICODE和UTF 步驟 4 : Java採用的是Unicode 步驟 5 : 一個漢字使用不同編碼方式的表現 步驟 6 : 檔案的編碼方式-記事本 步驟 7 : 檔案的編碼方式-e

PHP中文GBK編碼轉UTF-8

iconv 和 mb_convert_encoding的區別 函式比較 string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] ) 需要先enable mbstring 擴充套件庫,在 php

python3的url編碼解碼,自定義gbk、utf-8

因為很多時候要涉及到url的編碼和解碼工作,所以自己製作了一個類,廢話不多說 碼上見!# coding:utf-8 import urllib.parse class Urlchuli(): """Url處理類,需要傳入兩個實參:Urlchuli('實參','編碼

Java Web中使用JSPSmartUpload控制元件實現檔案的上傳和下載(解決中文亂碼問題)(JSP頁面採用GBK編碼

package edu.uestc.updown; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException

php不同版本htmlspecialchars函式過濾GBK編碼中文為空

升級php環境後發現每次使用htmlspecialchars過濾後中文內容就沒有了。經排查後發現php版本大於5.4的 htmlspecialchars 函式過濾中文會造成空白----gbk編碼確定是這樣。當然現在使用gbk編碼的已經很少了。但是如果公司老專案還是使用gbk

中文在UTF8和GBK編碼中的範圍

文章來源:http://www.reai.us/chinese-in-utf8-and-gbk 編碼範圍 1. GBK (GB2312/GB18030) x00-xff GBK雙位元組編碼範圍 x20-x7f ASCII xa1-xff 中文 x80-xff 中文 2.

utf-8編碼的頁面向GBK編碼的頁面提交中文表單亂碼終極解決方案

有關這個問題已經困擾我好多天了,甚至都有點上火,但是最後還是解決了。。 是這樣的,我是做有關讀秀的的請求,但是請求中文無論怎樣都是亂碼,無論是在請求前用js處理,還是用盡各種辦法,就是死活不行,後來到

UTF-8和GBK編碼之間的區別(頁面編碼、數據庫編碼區別)以及在實際項目中的應用

同方 截斷 擴展 字節 文章 ech shu 基礎上 頁面 第一節:UTF-8和GBK編碼概述 UTF-8 (8-bit Unicode Transformation Format) 是一種針對Unicode的可變長度字符編碼,又稱萬國碼,它包含全世界所有國家需要用到的字符

PHP的array_walk和array_map函數實現數組值UTF-8轉GBK編碼

for php false 2gb fun foreach () clas 內部 在PHP中,array_walk() 和 array_map()兩個函數都可以實現對數組中每個值的修改,比如本例就是將數組中所有的值,由UTF-8編碼轉成GBK編碼。 當然,除了這兩個函數,也

ruby環境sass編譯中文出現Syntax error: Invalid GBK character錯誤解決方法

方法 添加 ali 編譯 sass編譯 body har class *** 這種錯誤是因為在scss文件中使用了中文註釋,導致轉css時出錯。 解決辦法: 找到ruby安裝路徑下的engine.rb文件,(我的在這裏 E:\Ruby22-x64\lib\ruby\gems