2009-09-16 3 views
0

유니 코드로 인코딩 된 URL이있는 GET 동사를 허용하는 RESTful WCF 서비스가 있습니다. 유니 코드 문자는 서버에서 데이터를 가져올 때 이상하게도 작은 상자로 번역됩니다.WCF 유니 코드 UrlEncoded 제대로 전달하지 않음

서비스 계약에서 유니 코드를 얻기 위해해야 ​​할 일이 있습니까? UrlEncoded 좋은 문자열로 변환 되나요? %의 FF % FE %의 22 % 00O %의 FF의 % FE %의 20 % 00King의 %의 FF의 % FE %의 20 % 00of : 여기

[OperationContract] 
[WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, 
UriTemplate = "/Document/{Fragment}", RequestFormat = WebMessageFormat.Xml)] 
Message GetDocumentFromSearchResult(string Fragment); 

내가 전달 유니 코드의 샘플입니다 : 여기

내 계약의 % FF

나는 "King"과 "of"을 얻지 만 나머지는 문자열의 작은 사각형입니다.

디코딩 문제가 있습니까?

답변

1

당신이에 전달하는 것은 이상한 보인다

일반적으로 UTF-8은 URL에 사용되므로 프로토콜에 훨씬 적합하므로 (순수 ASCII로 NUL 바이트를 모두 이스케이프 할 필요 없음) 서비스가 기대하는 것일 수 있습니다. 올바르게 디코딩하지 않습니다 (% FF % FE는 유효한 UTF-8이 아니므로)

0

조각 [i]을 사용하여 문자를 검사하여 실제 문자가 무엇인지 확인하십시오. 그러면 디버거 또는 다른 출력 방법이 표시 할 수있는 변수가 제거됩니다. 이것은 거의 확실 문제는 바이트 순서 마크와 "문자 에 대한 UTF-16 포함 나타납니다, 그래서 더 입력의 인코딩에 문제가 다음과 같습니다.

관련 문제