سؤال

لدي راحة خدمة WCF التي يقبل على الأفعال مع ترميز Unicode عناوين url.على أحرف Unicode يتم ترجمتها إلى مربعات صغيرة الغريب عندما أحصل على البيانات على الملقم.

هل هناك شيء أريد أن أقوله عقد الخدمة القيام به من أجل الحصول على Unicode UrlEncoded يحصل أن تترجم إلى لطيفة السلاسل ؟

هنا هو بلدي العقد:

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

هنا عينة من unicode مررت في:%FF%FE%22%00O%FF%FE%20%00King%FF%FE%20%00of%FF

أحصل على "الملك" و "من" حسنا, ولكن بقية قليلا من السلسلة هي مربعات صغيرة.

يجب أن يكون فك المسألة ؟ ؟

هل كانت مفيدة؟

المحلول

ما كنت تمر في نظرات غريبة:يبدو أنها تحتوي على UTF-16 " حرف مع ترتيب البايت علامات.وهذا يكاد يكون من المؤكد مشكلة ، بحيث يبدو أكثر مثل مشكلة مع ترميز المدخلات.

عادة, UTF-8 هو استخدام عناوين url ، وهذا يناسب أفضل بكثير مع البروتوكول (لا حاجة إلى الهروب من كل NUL بايت في ASCII).هذا ومن المرجح أن يكون ما بك خدمة يتوقع حتى لا فك بشكل صحيح (كما %FF%FE غير صالح UTF-8).

نصائح أخرى

وفحص الأحرف باستخدام جزء [أنا] لنرى ما هي الأحرف الفعلية. والتي تعمل على إزالة متغير ما المصحح أو غيرها من طريقة الانتاج يمكن تبين لك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top