사전지식
C#코드로 웹페이지(html)에 자바스크립트 문자열을 박을 때에는 encoding을 해줘야 한다.
쌍따옴표나 홑따옴표 또는 탈출문자열이 섞여 있을 때 문제가 되기 떄문이다. (웹브라우저가 파싱을 못해요)
실습
public static object Escape(string str)
{
return HttpUtility.JavaScriptStringEncode(str);
}
public static string UnEscape(string str)
{
StringBuilder sb = new(str.Length);
for (int i = 0; i < str.Length; i++)
{
if (str[i] == '\\' && i + 1 < str.Length)
{
char c = str[++i];
switch (c)
{
case '\\':
case '"':
sb.Append(c);
break;
case 'b':
sb.Append('\b');
break;
case 't':
sb.Append('\t');
break;
case 'n':
sb.Append('\t');
break;
case 'f':
sb.Append('\f');
break;
case 'r':
sb.Append('\r');
break;
default:
if (c == 'u' && str.Length > i + 4)
{
++i;
int hex = Convert.ToInt32(str[i..(i+4)] , 16);
sb.Append((char)hex);
i+=3;
break;
}
sb.Append(c);
break;
}
}
else sb.Append(str[i]);
}
return sb.ToString();
}
참고
HttpUtility 에 decode 부문은 없는거 같아서 직접 만듬 (내가 못찾았을 수도?)
'C# > 예제 코드' 카테고리의 다른 글
c# config 파일 경로 바꾸는 2가지 방법. (0) | 2022.03.09 |
---|---|
c# 특정 폴더 컴파일 제외 .csproj 수정 (0) | 2022.03.08 |
c# 빌드할때 폴더 복사 .csproj 수정 (0) | 2022.03.08 |
c# 프로젝트 폴더 경로 구하기. (0) | 2022.03.08 |
c# config 값 저장하기 (process.env?) (0) | 2022.02.09 |