เป็นเรื่องปกติที่จะเพียงแค่สลับตัวอักษรเพื่อใช้ใน URL ดังนั้นจึงไม่จำเป็นต้องมีการเข้ารหัส% เพียง 3 ของ 65 ตัวอักษรมีปัญหา - +
, และ/
=
ทดแทนที่พบมากที่สุด-
ในสถานที่+
และในสถานที่ของ_
/
สำหรับช่องว่างภายใน: เพียงแค่เอาออก (the =
); คุณสามารถสรุปจำนวนช่องว่างที่ต้องการได้ ในอีกด้านหนึ่ง: เพียงย้อนกลับกระบวนการ:
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
.TrimEnd(padding).Replace('+', '-').Replace('/', '_');
กับ:
static readonly char[] padding = { '=' };
และย้อนกลับ:
string incoming = returnValue
.Replace('_', '/').Replace('-', '+');
switch(returnValue.Length % 4) {
case 2: incoming += "=="; break;
case 3: incoming += "="; break;
}
byte[] bytes = Convert.FromBase64String(incoming);
string originalText = Encoding.ASCII.GetString(bytes);
อย่างไรก็ตามคำถามที่น่าสนใจคือนี่เป็นแนวทางเดียวกับที่ "ไลบรารีตัวแปลงสัญญาณทั่วไป" ใช้หรือไม่ แน่นอนว่าเป็นสิ่งแรกที่สมเหตุสมผลในการทดสอบ - นี่เป็นแนวทางที่พบได้บ่อย
Url.Encode
กับสตริงได้BASE64
หรือไม่?