非ASCII文字を含むURLのエンコード
by
furyu-tei
2020-04-14 [2020/04/14 17:27:00]
非ASCII文字を含むURLのエンコードする(※IE非対応) 元ネタ:[非ASCII文字を含むURLのエンコード](https://oku.edu.mie-u.ac.jp/~okumura/javascript/encodeURI.html)
@@ -7,12 +7,14 @@
* @javascript_url
*/
( ( s_url, d_url, base ) => {
+const enc_ch = {'(':'%28',')':'%29',"'":'%27','@':'%40','.':'%2E'};
+
s_url = prompt( 'URLを入力(省略時:現在のURL)', '' );
if ( s_url === null ) return;
if ( ! s_url ) s_url = location.href;
if ( ! /^https?:\/\//.test( s_url ) ) base = document.baseURI;
-d_url = new URL( s_url, base ).href;
+d_url = new URL( s_url, base ).href.replace( /([()'@]|\.$)/g, ( all, group ) => enc_ch[ group ] );
prompt( 'エンコード結果', d_url );
} )();
/*
* @title 非ASCII文字を含むURLのエンコード
* @description 非ASCII文字を含むURLのエンコードする(※IE非対応) 元ネタ:[非ASCII文字を含むURLのエンコード](https://oku.edu.mie-u.ac.jp/~okumura/javascript/encodeURI.html)
* @include http://*
* @include https://*
* @license MIT License
* @javascript_url
*/
( ( s_url, d_url, base ) => {
const enc_ch = {'(':'%28',')':'%29',"'":'%27','@':'%40','.':'%2E'};
s_url = prompt( 'URLを入力(省略時:現在のURL)', '' );
if ( s_url === null ) return;
if ( ! s_url ) s_url = location.href;
if ( ! /^https?:\/\//.test( s_url ) ) base = document.baseURI;
d_url = new URL( s_url, base ).href.replace( /([()'@]|\.$)/g, ( all, group ) => enc_ch[ group ] );
prompt( 'エンコード結果', d_url );
} )();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。