この記事では、JavaScript で、escape()、encodeURI()、および decodeURI() を使用して URI エンコードとデコードを実装する方法をサンプル コードを通じて詳しく紹介します。みんなの勉強や仕事の参考になるので、困っている友達が参考にすることができます。
目次
1. URIのエンコードとデコード
1. 文字列のエンコードとデコード(消去)
このメソッドは ECMAScript v3 では非推奨となっており、代わりに decodeURI() および decodeURIComponent() を使用する必要があります。
1.escape(): 文字列をエンコードする
escape() は、ASCII 文字、数字、および特定の記号を除くすべての受信文字列をエスケープします。
構文: エスケープ(値);
1 2 3 |
varstr = "javascript hello"; varstr1 = エスケープ(str); document.write(str1); //出力: javascript%20%u4F60%u597D |
2. unecape():escape() 関数によってエンコードされた文字列をデコードします。
1 2 3 4 5 |
varstr = "javascript hello"; varstr1 = エスケープ(str); document.write(str1); //javascript%20%u4F60%u597D varstr2 = unescape(str1); alert(str2); //JavaScript hello をポップアップします |
2. URI のエンコードとデコード
1. encodeURI(): URI 内のエスケープ文字
URI 内の有効な文字はエンコードされないため、encodeURI() は URI 全体をエンコードするために使用されます。
構文: encodeURI(uri) これは、さまざまな AJAX リクエストをエンコードするときに中国語の文字化けの問題を解決するためによく使用されます。
1 2 3 |
varstr1 = "こんにちは javascript"; varstr2 = encodeURI(str1); document.write(str2); //出力: %E4%BD%A0%E5%A5%BDjavascript |
2. decodeURI(): URI 内の文字をデコードします。
语法:decodeURI(uri)
1 2 3 4 5 6 |
varstr1 = "こんにちは javascript"; varstr2 = encodeURI(str1); document.write(str2); //出力: %E4%BD%A0%E5%A5%BDjavascript varstr3 = decodeURI(str2); document.write(" "+ str3) //出力: こんにちは javascript |
3. URI コンポーネントのエンコードとデコード
1. encodeURIComponent(): URI コンポーネント内のエスケープ文字
encodeURIComponent メソッドは、単一の URIComponent (リクエスト パラメータを参照) をエンコードするときに最も一般的に使用され、URL 全体に影響を与えることなく、パラメータ内の中国語と特殊文字をエスケープできます。
1 2 3 |
varstr1 = "こんにちは javascript"; varstr2 = encodeURIComponent(str1); document.write(str2); //出力: %E4%BD%A0%E5%A5%BDjavascript |
2. decodeURIComponent(): URI コンポーネント内の文字をデコードします。
1 2 3 4 5 6 |
varstr1 = "こんにちは javascript"; varstr2 = encodeURIComponent(str1); document.write(str2); //出力: %E4%BD%A0%E5%A5%BDjavascript varstr3 = decodeURIComponent(str2); document.write(" "+ str3) //出力: こんにちは javascript |
2. HTMLのエンコードとデコード
1.htmlエンコード・デコード機能
エンコード機能:
1 2 3 4 5 6 7 8 9 10 |
functionhtmlEncode(str) { vars = ""; if(str.length == 0) return""; s = str.replace(/&/g, "&"); s = s.replace(/</g, "<"); s = s.replace(/>/g, ">"); s = s.replace(/'/g, "'"); s = s.replace(/"/g, ""); 戻り値; } ; |
解码函数:
1 2 3 4 5 6 7 8 9 10 |
functionhtmlDecode(str){ vars = ""; if(str.length == 0) return""; s = str.replace(/&/g, "&"); s = s.replace(/</g, "<"); s = s.replace(/>/g, ">"); s = s.replace(/'/g, "'"); s = s.replace(/"/g, "\""); returns; } |
2、用浏览器内部转换器实现
1.实现html转码
1 2 3 4 5 6 7 8 9 10 |
htmlEncode:function(html){ //1.首先动态创建一个容器标签元素,如DIV vartemp = document.createElement ("div"); //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持) (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html); //3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了 varoutput = temp.innerHTML; temp = null; returnoutput; } |
2、实现html解码
1 2 3 4 5 6 7 8 9 10 |
htmlDecode:function(text){ //1.首先动态创建一个容器标签元素,如DIV vartemp = document.createElement("div"); //2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持) temp.innerHTML = text; //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。 varoutput = temp.innerText || temp.textContent; temp = null; returnoutput; }, |
本文转载自: https://www.jb51.net/article/249984.htm