JSで日本語URLをエンコードして使用可能にする方法

Programming

日本語のURLはそのままでは扱うことが出来ません。
日本語のURLを使用したい場合はエンコードと言われる処理を行う必要があります。

今回はその日本語URLをエンコードする方法を紹介して、日本語URLを使用可能にする方法を解説します。

難易度(MAX10)★★★☆☆☆☆☆☆☆

JSで文字列をエンコードする方法

JavaScriptで文字列をエンコードする方法は以下のメソッドを使用すれば簡単に可能です。

メソッド意味
encodeURI文字列をエンコードする
encodeURIComponent文字列をエンコードする
const A = encodeURI('http://example.com/テスト.html')
const B = encodeURIComponent('http://example.com/テスト.html')
console.log(A)
console.log(B)

上記の場合「テスト」とのカタカナ(日本語)がエンコードされ使用可能なURLに変換されています。

以下の例文はオリジナルのページにあるテキストエリアに入力した文字列をTwitterのTweet時のURLに変換して、そのまま入力したテキストをツイートする様にリンクさせたシステムです。

HTML

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <script src="test.js" defer ></script>
    <title>JSテスト</title>
    <link rel="icon" href="">
    <meta name="description" content="">
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
      <header class="header"></header>
      <nav class="left"></nav>
      <main>
        <h2>ツイートするテキストを入れて下さい</h2>
        <textarea id="tweettTextarea"></textarea>
        <button id="tweetButton">ツイートする</button>
      </main>
      <aside class="right"></aside>
      <footer class="footer"></footer>
    </div>
  </body>
</html>

CSS

body {
  width: 800px;
  margin: 0 auto;
  min-height: 100vh;
  display: grid;
  grid-template:
    "header header header" 100px
    "left center right" 1fr
    "footer footer footer" 100px/
    100px 1fr 100px ;
}
 
header {
  grid-area: header;
}
 
nav {
  grid-area: left;
}
 
main {
  grid-area: center;
  padding: 20px;
  background-color: brown;
  background-image:url(img/haikei.jpg);
  background-size: cover;
}
 
aside {
  grid-area: right;
}
 
footer {
  grid-area: footer;
}

@media screen and (max-width: 1000px){
  body{
    grid-template: 
    "header" 0px
    "center" 1fr
    "left"
    "right"
    "footer" 0px
    ;
  }
}

textarea {
  width: 97%;
  height: 250px;
  margin: 5px;
}

h2{
  font-size: 25px;
  font-weight: bold;
  text-align: center;
}

button {
  background-color: aqua;
  cursor: pointer;
  border: none;
}

JavaScript

document.querySelector('#tweetButton').addEventListener('click' ,
() => {
    let tweeText = document.querySelector('#tweettTextarea').value;
    tweeText += ' #JavaScript';
    const encode = encodeURIComponent(tweeText);
    const tweetURL = `https://twitter.com/intent/tweet?text=${encode}`;
    window.open(tweetURL)
}
)

この様にエンコードすればURLを日本語で表示させることが出来ます。

ちなみにencodeURIとencodeURIComponentの違いはエスケープしない文字列の違いです。
encodeURIComponentは以下の文字も全てエスケープします。
/ ? & = + : @ $ ; , #

以上が「JSで日本語URLをエンコードして使用可能にする方法」でした。

2020年9月30日ProgrammingJava Script,WEB

Posted by KT