やりたいこと
- 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 ()
は、スペースを+
にします。
-