%を多数含んだURLから読める日本語URLに変換する方法 ( url / bookmark / LibreOffice )
1.概要
ひとつの事例ですが、下記事例のように日本語を含むURLを見かけることがあります。しかし、このURLをコピーして貼り付けると%を多数含む文字列となり、何が記述されているかわかりません。
本記事では2022年頃にshell scriptで日本語表示をペーストする方法を記載しています。参考資料には、送信する時の配慮で%を多数含んだURLを送らずに日本語URLを連絡できます。
参考資料:日本語URLを文字化けさせずにコピペしたい
https://ja.wikipedia.org/wiki/日本
「ttps://ja.wikipedia.org/wiki/日本」部分だけをコピー&ペーストして、後でhを追加
この方式によって、下記%を多数含んだURLを送付することがありません。
https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC
2.詳細
ここからは、%を多数含んだURLを受け取った場合、元の日本語を読める形のURLへ変換する手順に関して記述します。
ブラウザの表示
https://ja.wikipedia.org/wiki/日本
コピー後の表示
https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC
他の方から連絡を受けたURLが上記事例のようになっていると、URLをクリックする前に、可読可能な文字列に変換したいと思うことがあります。
URL変換するWEBサイトも存在しますが、ローカル環境で変換したいと感じることは多いでしょう。そこで、Ubuntu(bash shell)とWindows10(PowerShell)でURL変換する処理を紹介します。
(1) 操作方法
日本語を含むURLをクリップボードにコピー後、shellを起動すると、URL変換処理が実行され、変換結果をクリップボードに保管します。クリップボードから貼り付けると変換後URLとなります。(2) Ubuntu
(a) 必要なモジュールのインストールsudo apt install xclip nkf
(b) 変換処理のshell作成( urldecode.sh と言う名前で保存 )
#!/bin/bash
urldecode() {
INPUT=$(xclip -selection clipboard -o)
echo "INPUT URL"
echo $INPUT
OUTPUT=$(echo $INPUT | nkf -w --url-input)
echo "OUTPUT URL"
echo $OUTPUT
echo $OUTPUT | xclip -selection clipboard
}
urldecode
(c) 変換処理の実行
https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC
上記URLをクリップボードにコピー
urldecodeの実行
$ sh urldecode.sh
INPUT URL
https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC
OUTPUT URL
https://ja.wikipedia.org/wiki/日本
クリップボードから変換後のURLを貼り付けることができます。
(3) Windows10
(a) Windows10の実行環境Windows10ではPowerShellを利用します。しかし、操作性が悪いのでバッチファイル呼出を利用します。クリップボードにコピーしたURL変換は、urldecode.batをダブルクリック起動にします。
処理は、urldecode.bat -> urldecode.ps1 -> funcurldecode.ps1 で実行されます。
(b) 変換処理のshell作成( urldecode.bat , urldecode.ps1, funcurldecode.ps1 を作成 )
urldecode.bat 作成
echo off
powershell -ExecutionPolicy RemoteSigned -File %~dp0/urldecode.ps1
timeout 3
urldecode.ps1 作成
$CommandPath = $MyInvocation.MyCommand.Path
$ParentPath = Split-Path $CommandPath -Parent
. $ParentPath/funcurldecode.ps1
$InputUrl = get-clipboard
Write-Output "INPUT URL"
Write-Output $InputUrl
$Result = urldecode $InputUrl
$OutputUrl = $Result
Write-Output "OUTPUT URL"
Write-Output $OutputUrl
$OutputEncoding=[Console]::OutputEncoding
$OutputUrl | clip
funcurldecode.ps1 作成
function urldecode($InputUrl) {
Add-Type -AssemblyName System.web
$Result = [System.Web.HttpUtility]::UrlDecode($InputUrl,
[Text.Encoding]::GetEncoding("utf-8"))
Write-Output $Result
}
(c) 変換処理の実行
https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC
上記URLをクリップボードにコピー
urldecode.bat (ダブルクリック)
DOS窓が表示されURL変換されます。
windows10>echo off
INPUT URL
https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC
OUTPUT URL
https://ja.wikipedia.org/wiki/日本
3 秒待っています。続行するには何かキーを押してください ...
クリップボードから変換後のURLを貼り付けることができます。
3.所見
日本語URLを相手に送る場合に日本語を可読できる状態で送る方法と%が沢山含まれたURLが送られてきて可読できないURLを可読できるようにする方法を記述しました。追加部分には、更に、Bookmarkの差分を利用して、何が追加されたかをわかる手段を記述しています。
Bookmarkの整理をしている時にLibreOfficeのバージョン番号の割振りが変わり、西暦の下二桁を製品バージョンに含む形なっていることに気がつい来ました。余談として加筆します。
4.追加
(1) 別の対策
「日本語URLを文字化けさせずにコピペしたい」をネットで見つけたので、簡単な手順があると知りました。日本語を含むURLの参考にさせて頂きました。2022年頃に苦労してshellで実現したので、備忘録として記事を残すことにしました。
(2) 2つのbookmarksファイルの差分抽出
ubuntu-20.04でFirefoxを利用していますが、bookmarksには多数のフォルダを作成・整理をしてurlの保存をしています。しかし、調べ物をするためにネット検索で一度に多数のurlを調べた場合、どこに保管したのかわからなくなることが度々発生していました。やっと見つけたurlを失ってしまい再度探す都度、良い方法はないかと思っていました。
保管したbookmarksを以前のbookmarksと比較して、差分のurlをテキストファイルとして出力するshellを作成しました。ubuntu-20.04のFirefox版、Windows10のMicrosoft EDGE版を作成しましたが、EDGE版はbatchファイルレベルで簡易なものです。
想定している利用方法は、bookmarksをDocumentsディレクトリに保管します。Firefoxでは、bookmarks-2022-04-28.jsonになります。調べ物をしてurlを追加したので、bookmarks-2022-04-29.jsonを作成します。この2つのbookmarksの差分を取って、テキストファイルを作成します。
(a) Firefox
Firefoxはjson形式で保管されるためjson形式をhtml形式に変換後、差分を取ります。
必要なモジュールのインストール
sudo apt -y install jq
shell(diffbm.sh)の作成
#!/bin/bash
jq --sort-keys . ${1} > old.txt
jq --sort-keys . ${2} > new.txt
diff old.txt new.txt | grep "uri" | awk '{ print $3 }' > out_bookmark.txt
rm old.txt
rm new.txt
利用方法
sh diffbm.sh bookmarks-2022-04-40.json bookmarks-2022-04-21.json
出力結果
out_bookmark.txtに以下のように出力されます。
"https://stedolan.github.io/jq/"
(b) Microsoft EDGE
Microsoft EDGEはhtml形式で保管されるため、直接差分を取ります。
batchファイル(diffbm.bat)の作成
@echo off
echo "Output: out_bookmark.txt"
fc.exe %1 %2 | findstr http > out_bookmark.txt
利用方法
diffbm.bat bookmarks-2022-04-40.html bookmarks-2022-04-21.html
出力結果
out_bookmark.txtに出力されます。
batchファイル内でテキスト編集処理が容易ではなく、差分は見栄えが良くありません。
(3) 【余談】LibreOfficeのバージョン番号の割振りが変わりました
libreoffice-25.2のリリース案内をネットで見かけました。ubuntu-20.04のversionを調べるとlibreoffice-6.4.7.2。あれ〜、どうなっているのかと思って調べました。その内容を記述します。
Wikiを参照すると、libreofficeの変化の流れを見ることができます。versionは2024年から年が含まれるように変わっているようです。つまり、LO-7.6の次はLO-24.2となっています。これでバージョンの差異を理解することができました。
参考
[外部サイト参照]・ファイルの内容・標準出力をクリップボードへコピーする
・Linux:コマンドラインでURLエンコード・デコードする(nkf編)
・PowerShell/PowerShellでURLエンコード・URLデコード
・PowerShellスクリプトをダブルクリックで実行するには
・「%~dp0」を理解すれば、Windowsバッチ中でディレクトリ名やファイル名を自由に使えるから便利
・日本語URLを文字化けさせずにコピペしたい
コメント
コメントを投稿