Member 12672822 Ответов: 1

Как использовать символы UTF8 в методе C# webrequest GET


Я пытаюсь отправить запрос по локальному кабелю с помощью метода webRequest GET на машину
хотя URL-адрес выглядит так, он отлично работает

command = "?insert_employee:cart_number=0007989222&name=ali&last_name=ramazani&finger_number=123&?"


но когда я использую персидские символы, машина назначения отправляет ошибку

command="?insert_employee:cart_number=0007989222&name=علي&last_name=رمضاني&finger_number=123&?";


однако в delphi он отлично работает с обеими командами

Что я уже пробовал:

я попробовал Uri вместо простого url и снова ошибка была такой же

и я использую HttpUtility.Urlencode что было еще хуже потому что машина назначения ничего не распознала и не отправила ответ даже ошибку

1 Ответов

Рейтинг:
1

Afzaal Ahmad Zeeshan

.NET framework полностью поддерживает отображение символов Unicode, C# char тип является доказательством этого — это кодированный символ UTF-16 LE. char (ссылка на C# )[^]. Проблема заключается в самом URL-адресе, RFC 3986[^] правила создания URL-адресов, поэтому он просит не используйте Юникод в URL-адресах. Читать это, проверка-какие символы делают URL-адрес недействительным? - переполнение стека[^]. Walkaround должен фактически кодировать его или никогда не использовать в URL-адресах.

Чтобы узнать, как кодировать данные Unicode в URL-адресе, прочитайте, utf 8-Как правильно кодировать символы Юникода в URL-адресе? - переполнение стека[^]

Немного неуместная штука

Тем не менее, что заставляет вас думать, что данные теряются? Кроме того, вы ничего не сказали о сервере, который используете, или о том, как вы получаете доступ к данным на стороне клиента, не так ли?Сеть тоже? Ошибка возникает из-за кодировок, которые могут отличаться в используемых устройствах, фреймворках или языках, и если это так, то данные уже потеряны до того, как вы даже попытаетесь их отладить. Дельфи поддерживает, а жаль .Net-это не Делфи. :-)

Я написал исчерпывающую статью о Unicode в .NET для начинающих, прочтите ее, чтобы узнать немного больше по этому вопросу, Чтение и запись данных Unicode в .NET[^].


Member 12672822

Спасибо за ваш ответ .
машина - это просто система посещаемости . он просто принимает команду в форме http url и отвечает так : сделано или неверные данные
когда я говорю, что у него есть ошибка, Я имею в виду, что он говорит, что данные недействительны

Afzaal Ahmad Zeeshan

Можете ли вы отправлять данные с помощью POST вместо GET? Это будет полезно в данном случае. Или используйте что-то вроде отправки формы.