受講しました。04まではすんなりいったのですが、以下の部分で腑に落ちない点があるのです。
上記がiTunesリンク。ここに以下の変換を噛ませてみる。
「% → %25」「 → %20」「” → %22」「& → %26」「’ → %27」「/ → %2F」「? → %3F」「\ → %5C」「: → %3A」「= → %3D」
そして更にもう一回。
「% → %25」「 → %20」「” → %22」「& → %26」「’ → %27」「/ → %2F」「? → %3F」「\ → %5C」「: → %3A」「= → %3D」
すると…。さっきの赤字の部分になります(゚Д゚ )!
iTunes Link Maker で ' はエンコードされない
以下のように入力して確認しましたが、エンコードされないんですよね。
エンコードについては encodeURIComponent() と挙動は同じなのではないかなと。
デコード時は %27 が ' にデコードされるようなので動作上の問題はありませんが、iTunes Link Maker と結果が異なるのは気持ちが悪いのです。
2 回目の変換は冗長では?
1回目の変換で % 以外の置換対象文字は存在しなくなっているので、2回目の変換は % のみを置換すればよいのではないかなと。
ということで私はエンコード処理を 1 つの Regex モジュールにまとめて、以下のようにしてみました。
まあ、処理結果は変わらないのですが。
hiro45jp さんのオリジナルのパイプは 2 回の encodeURIComponent() を実行しているイメージなのかと推測します。
LinkShare 側は decodeURIComponent() を 2 回実行しているイメージのようですが、なぜ 2 回なのかその理由がわからないんですよね。。。