LoginSignup
1
2

More than 1 year has passed since last update.

リンクを含むTweetができるURLを生成する (2系統のURLエンコード)

Last updated at Posted at 2019-09-01

やりたいこと

  • Tweet Web Intentで使う以下のようなURLを得られるように、二重にURLエンコードしたいです。
    https://twitter.com/intent/tweet?text=%e3%83%86%e3%83%88%e3%83%a9%e3%83%a9%e3%83%9c+%23tetr4lab.&url=https%3a%2f%2ftetr4lab.nyanta.jp%2f%3ftext%3d%25E3%2581%2582%2520%25E3%2581%2584%25E3%2581%2586%2520%25E3%2581%2588%25E3%2581%258A

ポイント

  • 外側ではスペースは+に変換したいですが、内側ではスペースを%20に変換したいです。
  • System.Web.HttpUtility.UrlEncode ()UnityEngine.Networking.UnityWebRequest.EscapeURL ()は、+へ変換します。
  • System.Uri.EscapeUriString ()は、%20へ変換します。

コード

.NET

using System;
using System.Diagnostics;

void Sample () {
    var innerMessage = "あ いう えお";
    var innerUrl = $"https://tetr4lab.nyanta.jp/?text={Uri.EscapeUriString (innerMessage)}";
    var outerMessage = "テトララボ #tetr4lab.";
    var outerUrl = $"https://twitter.com/intent/tweet?text={Uri.EscapeDataString (outerMessage)}&url={Uri.EscapeDataString (innerUrl)}";
    Process.Start (outerUrl);
}

Unity

using System;
using UnityEngine;
using UnityEngine.Networking;

void Sample () {
    var innerMessage = "あ いう えお";
    var innerUrl = $"https://tetr4lab.nyanta.jp/?text={Uri.EscapeUriString (innerMessage)}";
    var outerMessage = "テトララボ #tetr4lab.";
    var outerUrl = $"https://twitter.com/intent/tweet?text={UnityWebRequest.EscapeURL (outerMessage)}&url={UnityWebRequest.EscapeURL (innerUrl)}";
    Application.OpenURL (outerUrl);
}

参考

どうもありがとうございました。

困ったときは… (蛇足)

受け取ったパラメータのスペースが意図せず+になる

  • パラメータ部分に対してUri.EscapeDataString ()を使います。
    • Uri.EscapeDataString ()は、スペースを%20にします。
    • 対して、Uri.EscapeUriString ()は、スペースを+にします。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2