2011-04-06 5 views
1

나는 약간의 경로가있는 sitauation에있다. 이 경로는 "jadajada.com/My Site.html"과 같을 수 있습니다.HttpUtility.UrlEncode - 더하기 대신 마이너스입니까?

나는 위의 URL을 인코딩하기 위해 HttpUtility.UrlEncode를 사용합니다. 그러나 나는 공간이있을 때마다 이것을 "+"기호로 바꿉니다. 대신 "-"기호가 필요합니다.

이 방법으로이 작업을 수행 할 수 있습니까? 그리고 그렇다면, 어떤 종류의 인코딩 요법. 그에 대한 표준 디코더가 없기 때문에

(그리고 그래, 난 당신이하려면 string.replace을 사용하지만, 지금 ;-)

+1

왜이 작업을 수행 하시겠습니까? URL 인코딩이 작동하는 방식입니다. – Steven

+0

왜 공백에 대해 + 기호를 사용하여 모든 표준을 준수하는 유효하고 올바르게 인코딩 된 URL을 비표준 URL로 변환 하시겠습니까? –

+0

URL은 공백 사이에 "+"대신 "-"로 표시됩니다. 어떤 사람들은 SEO가 너무 높다고 생각합니다 (이것은 아무도 확실하게 알 수없는 것입니다). –

답변

4

"-"과 공간을 교체하기위한 해당 솔루션을 피해주십시오 수 있다는 것을 알고는 정말 인코딩입니다 ; "+"이 맞습니다. 코드가 (예를 들어, 공간을 기대 정확한 슬러그 일치 할)이 값에 의존하지 않기 때문에 이것은 단지, 그리고 한 표시 인 경우

그러나, 당신은 단순히 .Replace(" ","-")은 할 수 인코딩하기 전에. 그것은 -는 어떤 조합이 (가 변경되지 않습니다 즉)해야한다가되면 그 손실 시나리오에서 당신은 또한 그것을, 몇 가지 다른 대체 지나치게 긴 문자열을 잘라 내기 등

인코딩 할 수 있습니다.

+0

Thanks! :) 굉장히 유용하다 –

1

공간은 + 또는 %20으로 URL 인코딩 될 수 있습니다. 이것이 공간이 인코딩되는 방식이므로 다른 임의의 문자로 인코딩하는 방법은 없습니다.

공백을 인코딩 대신 인코딩하지 않고 -으로 바꾸려면 Replace 메서드를 사용하는 것이 적합합니다.

1

UrlEncoding은 공백을 URL 내부 공간을 나타내지 않으므로 자체 공백으로 대체하지 않습니다. + 또는 % 20을 사용합니다.

실제로 이것을 수행하려는 경우 여기서는 string.Replace이 가장 좋지만 공백을 원하지 않으면 URL에서 공백을 제거해야합니다. 처음.

0

+에서 -로 변경하려는 이유 중 하나는 URL에 +가 포함되어 있으면 URL 재 작성이 작동하지 않는다는 것입니다 (이중 이스케이프를 완전히 비활성화하지 않는 한). +을 (를) 변경하는 것이 더 쉽습니다.