2012-04-04 4 views
0

System.Web.HttpUtility.UrlEncode를 사용하여 인코딩하는 큰 URL이 있습니다. 내가 인코딩 할 때 그것을 인코딩하지 않는 것은 내가 가진 작업 예제와 같습니다. 나는 그 문제가 무엇인지, 아마도 다른 캐릭터 유형이나 다른 것이 무엇인지 모르겠다. 나는 만들어 져야한다고 가정되는 것과 실제로 만들어지는 것에 대한 예를 든다. 어떤 도움을 주셔서 감사합니다, 나는 이것에 분실된다.URL 인코딩 C# 불일치 인코딩

근무 exmaple

22 % 7Chttp % 3A % 2F % 2Fv17.nonxt1.googlevideo.com % 2Fvideoplayback % 3Fid % 3D0b608733ae5257c3 % 26itag % (이 하나 % 252Citag % (252) 및 다른 나던나요 어떻게 보면) 3D22 % 26source % 3Dpicasa % 26ip % 3D0.0.0.0 % 26ipbits % 3D0 % 26expire % 3D1333533157 % 26sparams % 3Did % 252Citag % 252Csource % 252Cip % 252Cipbits % 252Cexpire % 26signature % 3D8AD67D74F34FBAFBBA87616C0AED4A336DF0982A.129E2B5E648F8A2F35A34F312AC5C3C957A1C40A % 26key % 3Dlh1 2C35 % % % 7Chttp 3A % 2F % 2Fv18.nonxt3.googlevideo.com % 2Fvideoplayback % 3Fid % 3D0b608733ae5257c3 % 26itag % 3D35 % 26source % 3Dpicasa % 26ip % 3D0.0.0.0 % 26ipbit % 3D0 % 26expire % 3D1333533157 % 26sparams % 3Did % 252Citag % 252Csource % 252Cip % 252Cipbits % 252Cexpire % 26signature % 3D7A58A11994C710872E945D0EAA6E43B6BFB8A648.B9C1D9FB377E1A49EBF3DC6C166C0B6E3E94EC24 % 26key % 3Dlh1 % 2C 34 % 7Chttp % 3A % 2F % 2Fv6.nonxt1.googlevideo.com % 2Fvideoplayback % 3Fid % 3D0b608733ae5257c3 % 26itag % 3D34 % 26source % 3Dpicasa % 26ip % 3D0.0.0.0 % 26ipbit % 3D0 % 26expire % 3D1333533157 % 26sparams % 3Did % 252Citag % 252Csource % 252Cip % 252Cipbits % 252Cexpire % 26signature % 3D260B10850A3448C849B8B8F1F2AF5E31244E71BC.6D7420FD66B85D40982BFB2C847EDB46021C63AE % 26key % 3Dlh1 % 2C5 % 7Chttp % 3A % 2F % 2Fv23.nonxt7.googlevideo.com % 2Fvideoplayback % 3Fid % 3D0b608733ae5257c3 % 26itag % 3D5 26source % % % 3Dpicasa 26ip % 3D0.0.0.0 % 26ipbits % 3D0 % 26expire % 3D1333533157 % 26sparams % 3Did % 252Citag % 252Csource % 252Cip % 252Cipbits % 252Cexpire % 26signature % 26key %가 3Dlh1 여기

가 하나의 예이다 3D9894DCDA7D2634EE0006CE0F6E0E29ABF7A8F253.18765D7CD7BDE80ED1A47DC8EC559C3E05C92F56 % 나는 생성 중이다 (% 2citag % 2처럼 인코딩 됨)

5 % 7chttp % 3a % 2f % 2fv23.nonxt7.googlevideo.com % 2fvideoplayback % 3fid % 3d0b608733ae5257c3 % 26itag % 3d5 % 26source % 3dpicasa % 26ip % 3d0.0.0.0 % 26ipbit % 3d0 % 26expire % 3d1333562840 % 26sparams % 3did % 2citag % 2csource % 2cip % 2cipbits % 2cexpire % 26signature % 3dC0E2993011931D9F5FCAFAF54E821415F6042DDD.477CD23B021563A6DE30E858E35C21046E0B0BA6 % 26key % 3dlh1 % 2c18 % 7chttp % 3A % 2F % 2fv11.nonxt4.googlevideo.com % 2fvideoplayback % 3fid % 3d0b608733ae5257c3 % 26itag % 3D18 26source % % % 3dpicasa 26ip % 3d0.0.0.0 % 26ipbits % 3D0 % 26expire % 3d1333562840 % 26sparams % 3did % 2citag % 2csource % 2cip % 2cipbits % 2cexpire % 26signature % 3d696501A8ACBA0E1246173B040E0FB81DA8EBCDC7.944BA6C08C630EFFC2456D66BAD12376D7E377B2 % 26key % 3dlh1 % 2c34 % 7chttp % 3A % 2F % 2fv6. nonxt1.googlevideo.com % 2fvideoplayback % 3fid % 3d0b608733ae5257c3 % 26itag % 3d34 % 26source % 3dpicasa % 26ip % 3d0.0.0.0 % 26ipbit % 3d0 % 26expire % 3d1333562840 % 26sparams % 3did % 2citag % 2csource % 2cip % 2cipbits % 2cexpire % 26 서명 % 3dDDD3D9081F7F2FF462D17CFAE6CAB72AEB86DEA9.3275E0EE8921EF728132035FC94BEF5926A0B7C1 % 26key % 3dlh1 % 2c35 % 7chttp % 3a % 2f % 2fv18.nonxt3.googlevideo.com % 2fvideoplayback % 3fid % 3d0b608733ae5257c3 % 26itag % 3d35 % 26source % 3dpicasa % 26ip % 3d0.0.0.0 % 26ipbit % 3d0 % 26expire % 3d1333562840 % 26sparams % 3did % 2citag % 2csource % 2cip % 2cipbits % 2cexpire % 26signature % 3d7826E7470450F9F473BC7A845967EF3AC655CFB.3850F952F5D68151D325CD754C581CD66B0BC4D7 % 26key % 3dlh1 % 2c22 % 7chttp % 3A % 2F % 2fv17.nonxt1.googlevideo.com % 2fvideoplayback % 3fid % 3d0b608733ae5257c3 % 26itag % 3d22 % 26source % 3dpicasa 26ip % % % 3d0.0.0.0 26ipbits % 3D0 % 26expire % 3d1333562840 % 26sparams % 3did % 2citag % 2csource % 2cip % 2cipbits % 2cexpire % 26signature % 3d32FAAE6AE74B22BFB3DBD4300CEEDBC1A12A9ED4.8014678ABB1AEE93FB4B1C36E2C74C89102DC112 % 26key % w3c 기준에 따르면 3dlh1

답변

2

첫 번째 예처럼 보이는 URL은 두 번 인코딩됩니다. 당신이 디코딩 sparams 매개 변수를 보면 그것은

sparams = ID % 2Citag % 2Csource % 2Cip % 2Cipbits % 2Cexpire

두 번째 예에서

sparams = ID로 표현의 의미 , itag, 소스, ip, ipbits, 만료

첫 번째 예제에서 일어나는 일은, 전나무 값에 대해 UrlEncode를 수행하는 것입니다 성. 이 값 사용 URL을 구성한 다음 생성 된 URL에서 UrlEncode를 수행하십시오.

UPDATE : 이것은 당신의 쿼리 문자열의 값이 urlencoded를해야 할 값 (예를 들어, & 공간 등.?)

+0

좋아, 지금 무슨 일이 일어나는지 고마워. C#에서 URL을 분석 할 수있는 방법이 있습니까? 원하는 부분을 인코딩 한 다음 다시 결합하여 인코딩하십시오. – user516883

+0

URL을 어떻게 구성하고 있습니까? 값을 할당 할 때 한 번 인코딩 할 수 있습니다. URL을 생성 한 후에는 한 번 인코딩 할 수 있습니다. 효과적이기 위해서는 URL을 작성하고 이미 존재하는 URL에이 작업을 수행해야합니다. – Ramesh

+0

URL이 stringbuilder 객체에 추가됩니다. 그래서 나는 각 URL에 접근 할 수있다. – user516883

0

, 귀하의 예제는 괜찮습니다. % 252 기호는 없습니다.

+0

는 그럼 왜 작동 예 작동 않고 포함 된 경우 일반적인 관행 준수해야 할 내 (그것이 작동하지 않는) exampl은 어떻게 만들어 지나요? – user516883

+0

Ramesh 대답을보세요, 실제로는 이중으로 인코딩 된 것처럼 보입니다. –

0

나는 당신이 기대 정확히 모르겠지만, 당신이 URL Decoder에 이러한 문자열을 발사 할 때, 이것은 당신이 무엇을 얻을 수 있습니다 :

문자열 1

22|http://v17.nonxt1.googlevideo.com/videoplayback?id=0b608733ae5257c3&itag=22&source=picasa&ip=0.0.0.0&ipbits=0&expire=1333533157&sparams=id%2Citag%2Csource%2Cip%2Cipbits%2Cexpire&signature=8AD67D74F34FBAFBBA87616C0AED4A336DF0982A.129E2B5E648F8A2F35A34F312AC5C3C957A1C40A&key=lh1,35|http://v18.nonxt3.googlevideo.com/videoplayback?id=0b608733ae5257c3&itag=35&source=picasa&ip=0.0.0.0&ipbits=0&expire=1333533157&sparams=id%2Citag%2Csource%2Cip%2Cipbits%2Cexpire&signature=7A58A11994C710872E945D0EAA6E43B6BFB8A648.B9C1D9FB377E1A49EBF3DC6C166C0B6E3E94EC24&key=lh1,34|http://v6.nonxt1.googlevideo.com/videoplayback?id=0b608733ae5257c3&itag=34&source=picasa&ip=0.0.0.0&ipbits=0&expire=1333533157&sparams=id%2Citag%2Csource%2Cip%2Cipbits%2Cexpire&signature=260B10850A3448C849B8B8F1F2AF5E31244E71BC.6D7420FD66B85D40982BFB2C847EDB46021C63AE&key=lh1,5|http://v23.nonxt7.googlevideo.com/videoplayback?id=0b608733ae5257c3&itag=5&source=picasa&ip=0.0.0.0&ipbits=0&expire=1333533157&sparams=id%2Citag%2Csource%2Cip%2Cipbits%2Cexpire&signature=9894DCDA7D2634EE0006CE0F6E0E29ABF7A8F253.18765D7CD7BDE80ED1A47DC8EC559C3E05C92F56&key=lh1 

문자열이

5|http://v23.nonxt7.googlevideo.com/videoplayback?id=0b608733ae5257c3&itag=5&source=picasa&ip=0.0.0.0&ipbits=0&expire=1333562840&sparams=id,itag,source,ip,ipbits,expire&signature=C0E2993011931D9F5FCAFAF54E821415F6042DDD.477CD23B021563A6DE30E858E35C21046E0B0BA6&key=lh1,18|http://v11.nonxt4.googlevideo.com/videoplayback?id=0b608733ae5257c3&itag=18&source=picasa&ip=0.0.0.0&ipbits=0&expire=1333562840&sparams=id,itag,source,ip,ipbits,expire&signature=696501A8ACBA0E1246173B040E0FB81DA8EBCDC7.944BA6C08C630EFFC2456D66BAD12376D7E377B2&key=lh1,34|http://v6.nonxt1.googlevideo.com/videoplayback?id=0b608733ae5257c3&itag=34&source=picasa&ip=0.0.0.0&ipbits=0&expire=1333562840&sparams=id,itag,source,ip,ipbits,expire&signature=DDD3D9081F7F2FF462D17CFAE6CAB72AEB86DEA9.3275E0EE8921EF728132035FC94BEF5926A0B7C1&key=lh1,35|http://v18.nonxt3.googlevideo.com/videoplayback?id=0b608733ae5257c3&itag=35&source=picasa&ip=0.0.0.0&ipbits=0&expire=1333562840&sparams=id,itag,source,ip,ipbits,expire&signature=7826E7470450F9F473BC7A845967EF3AC655CFB.3850F952F5D68151D325CD754C581CD66B0BC4D7&key=lh1,22|http://v17.nonxt1.googlevideo.com/videoplayback?id=0b608733ae5257c3&itag=22&source=picasa&ip=0.0.0.0&ipbits=0&expire=1333562840&sparams=id,itag,source,ip,ipbits,expire&signature=32FAAE6AE74B22BFB3DBD4300CEEDBC1A12A9ED4.8014678ABB1AEE93FB4B1C36E2C74C89102DC112&key=lh1 

URL이 상당히 다르며 나는 당신이 원하고 있는지 잘 모르겠다.

+0

그것이 작동한다면 나는 그것들을 원한다. 따라서 인코딩하기 전에 인코딩 된 문자로 문자를 대체해야합니다. 이상하게 보입니다. – user516883

+0

어디에서 디코딩 했습니까? – user516883

+0

URL이 질문에서 하이퍼 링크되었습니다. –