2016-07-28 2 views
1

я работаю с внешним API, и я хотел, чтобы проверить, как он будет принимать специальные символы ... поэтому я стараюсь посылать следующее значение: -почему эти 2 charecters Е и ¬ не декодируются правильно

!"£$%^&*()_+-=[]{},./;'[]#?:@~{};:\|¬` 

который спасся внутри внешней системы следующим образом: -

!"%u00a3$%^&*()_+-=[]{},./;'[]#?:@~{};:\|%u00ac` 

, который означает, что внешний апи не смог декодировать %u00a3, как £, а также не в состоянии декодировать %u00ac, как ¬ ?? в то время как он был способен правильно декодировать другие значения ... так ли есть причина, почему он обрабатывал £ и ¬ по-другому? другими словами, он не мог правильно декодировать этих 2 фрахтователей?

второй пункт. поскольку мой api не поддерживает эти типы символов, так есть способ проверить, содержит ли строка такие значения и отображать сообщение об ошибке пользователям, что они не должны добавлять эти символы?

+1

как вы их декодируете ?? – Steve

+0

@Steve Я использую UriBuilder (apiurl); где apiurl будет содержать uri API и переданные параметры, включая значения £ и ¬ –

ответ

2

Внешний апи вероятно использует ASCII кодировку: https://en.wikipedia.org/wiki/ASCII

Как персонажи £ и ¬ не существуют в ASCII кодировке, то апи возвращал значение Юникода шестнадцатеричных символов (%u указать это unicode и 00ac, который является шестнадцатеричным значением символа ¬).

Это также может быть проблема с программой, которую вы отправляете, или способом чтения строки. Не могу сказать без дополнительной информации.

+0

, это действительная точка, о которой я думаю ... так есть ли способ предотвратить добавление пользователями таких значений? Я имею в виду, могу ли я проверить, строка содержит символы не ASCII, такие как ¬ и £, и выводит сообщение об ошибке пользователю? –

+0

@johnG Я действительно мало знаю о c sharp или html, поэтому вы должны попросить об этом кого-то другого или выполнить поиск, если на него был дан ответ в другом вопросе. – fraret