開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
うーん、URLの構文規則としては日本語文字等は直接入れられないので、%+16進表記にしなくてはならないし、WindowsでChromeやFirefoxを使っている限りはURLをコピーするとちゃんと%表記になるんですが、どうもmacOS利用の方でこの問題に遭遇している例を何年も見ています(続く)
— Tetsuo Sakaguchi (@tsaka1) 2018年8月27日
https://t.co/oYjnVPF7Tuでいま一番ストレスフルなのはURLに日本語が入る(というかタイトルがURLになる)という仕様だなあ。Twitterが悪いんだけど、URLに日本語が入るとうまくリンクできない。うーん…
— 結城浩 (@hyuki) 2018年8月27日
とりあえずの解決策として、毎回safariのjs console 開いて encodeURI 使ってます。(><)
— kamimura (@mkamimura) 2018年8月27日
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)に出てきたpyperclipパッケージを利用して、ダブルクリックのみで日本語(非ASCII文字)を含むアドレスのTwitter等への貼り付けの問題を解決できるようにしてみた。
といのも、毎回アドレスバーでURLをコピー、JavaScript Consoleを開いて、そこにペースト、そしてencodeURIでエンコード、それをコピー、そしてペーストって大変。その都度Google ChromeやFirefoxを開くのも同様に大変なので。
2019/09/01 追記:Google Chrome(macOS)もSafariと同じ挙動になったみたい。「Version 76.0.3809.132 (Official Build) (64-bit)」で確認。いつ変わったかは調べてない。
Firefox(macOS)も確認したらこちらの挙動は元のままで変わらず。バージョンは「68.0.2 (64-bit)」。
コード
Python 3
#!/usr/bin/env python3 import urllib.parse import pyperclip url = pyperclip.paste() print(url) url = urllib.parse.quote(url, safe='/:') print(url) pyperclip.copy(url)
入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))
Last login: Fri Mar 22 11:08:42 on ttys001 /Users/.../URLEncoder.py ; exit; $ /Users/.../URLEncoder.py ; exit; https://www.jp-kamimura.com/連長圧縮の結果 https://www.jp-kamimura.com/%E9%80%A3%E9%95%B7%E5%9C%A7%E7%B8%AE%E3%81%AE%E7%B5%90%E6%9E%9C logout Saving session... ...copying shared history... ...saving history...truncating history files... ...completed. [Process completed]
上記の出力は、ランレングス符号化(RLE(Run-Length Encoding))による圧縮結果を変換した結果。
事前準備、使い方は、
- Python 3.xをインストール。(macOSに標準搭載のpythonが2.7ではなく3.xになってくれれば…)
- pip等でpyperclipをインストール。
- 上記のコードをURLEncoder.py(あるいは他の名前でもいい)というファイルとして保存して実行権限を変更。
Terminal
$ chmod a+x URLEncoder.py $
- 保存したファイルを右クリック、「Get Info」、「Open with:」で下の方の「Other」を選択。
- 「Enable:」をAll AplicationsにしてUtilitiesフォルダのTerminalを選択。
頻繁に使うならデスクトップとかDock(アプリケーションの部分にファイルは置けないみたいなので、右側のTrash(ゴミ箱)がある部分)に設置しておけば、いつでもすぐに使えたり。
tkinterでGUIアプリケーションにしてみた。
0 コメント:
コメントを投稿