To jest strzał w ciemność, a ja z góry przepraszam, jeśli to pytanie brzmi jak błądzenie szaleńca.C#, UTF-8 i kodowanie znaków
W ramach integracji z firmą zewnętrzną, potrzebuję kodowania UTF8 informacji o łańcuchach przy użyciu C#, aby można było wysłać je do serwera docelowego za pomocą formularza wieloczęściowego. Problem polega na tym, że odrzucają niektóre z moich zgłoszeń, prawdopodobnie dlatego, że nie koduję poprawnie ich treści.
W tej chwili, próbuję dowiedzieć się, jak myślnik lub łącznik - nie mogę powiedzieć, który jest po prostu patrząc na niego - jest odbierany lub interpretowany przez serwer docelowy jako [email protected]~S
(tak, to jest ciąg 5-znakowy i nie przegląda się twoja przeglądarka). I niestety nie mam dostatecznego dostatecznego zrozumienia Encoding.UTF8.GetBytes()
, aby wiedzieć, jak korzystać z tablicy bajtów, aby rozpocząć identyfikację miejsca, w którym może leżeć problem.
Jeśli ktoś może udzielić jakichkolwiek wskazówek lub porad, byłbym bardzo wdzięczny. Do tej pory moim jedynym przyjacielem był MSDN i niewiele z tego.
aktualizacji 1 Po kilka kopanie się, że stwierdzono, że za pomocą System.Web.HttpUtility.UrlEncode()
do zakodowania DASH postać EM („-”) będzie heks-zakodować je jako „% e2% 80% 94”.
Obecnie wysyłam tę informację w poście HttpWebRequest
, z typem treści "application/x-www-form-urlencoded" - czy to właśnie jest przyczyną problemu? A jeśli tak, jaki jest właściwy sposób kodowania serii par nazwa-wartość, których wartości mogą zawierać znaki Unicode, tak, że będzie to zrozumiałe dla serwera oczekującego żądania UTF-8?
Z tego wyniku mogę przypuszczać, że możesz być ascii kodujący wynik utf8 kodowania ema. – Joshua
Nawet przy niewłaściwym kodowaniu jest mało prawdopodobne, aby 1-znakowy kreska mogła zostać przetłumaczona na 5-znakową sekwencję. To prawdopodobnie nie tylko problem z kodowaniem. –
@Joshua: Myślę, że jesteś blisko sedna problemu. Właśnie dodałem aktualizację do mojego pierwotnego wpisu z dodatkowymi informacjami. –