Проблемы кодирования \ декодирования строк JS <-> C # - PullRequest
3 голосов
/ 12 октября 2010

У меня проблема с кодировкой JS, а затем с декодированием на сервере C #.Я использую функцию javascript encode () - но когда у меня есть специальные символы, такие как +, в C # есть httputility.urldecode () ->, и он конвертирует его так, как если бы он был пробелом.

Каков наилучший способпередавать кодировку JS и декодирование C #?

У меня есть <a href='javascript:foo(escape('hello +'))' />

function foo(data)
{
$.ajax({ url: "http:/....." + data, dataType: 'html', context: document.body
...
...
}

Я отладил сервер и получил «привет ++» - он не знает, какой + какой (пробел или +) Спасибо!

Ответы [ 3 ]

2 голосов
/ 18 апреля 2011

javascript:

escape(string);

C #:

Microsoft.JScript.GlobalObject.unescape(string);

эта комбинация отлично работает для меня.

2 голосов
/ 12 октября 2010

Javascript encode выполняет кодирование html . Поскольку + действителен в HTML, он ничего не делает с +.

Тем не менее, вы передаете эту строку через URL - + в URL означает закодированное пространство.

Вам необходимо использовать javascript encodeURIComponent, если вы хотите, чтобы + был правильно закодирован для использования на стороне сервера:

<a href='javascript:foo(encodeURIComponent('hello +'))' />

Вы должны понимать, что кодировка HTML и кодировка URL разные вещи .

0 голосов
/ 14 ноября 2013

Нет необходимости делать кодирование в javascript и декодирование в c #. Просто используйте функцию javascript 'encodeURIComponent (string)' и не нужно вносить никаких изменений в код на c #.

...