URL에서 사용 하기 위해 단순히 알파벳 을 바꾸는 것이 일반적 이므로 % 인코딩이 필요하지 않습니다. 불과 3 65 개 문자는 문제가있다 - +
, /
하고 =
. 가장 일반적인 교체는 -
대신 +
하고 _
대신에 /
. 패딩에 관해서는 : 그냥 제거하십시오 ( =
); 필요한 패딩의 양을 추론 할 수 있습니다 . 다른 쪽 끝 : 프로세스를 반대로하십시오.
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
?