Литеральная строка Unicode

я отправляю некоторый json в почтовом запросе http. часть текста внутри объекта json должна иметь надстрочные индексы.

если я создам свою строку на С#, например:

    string s = "here is my superscript: \u00B9";

он преобразует ¹ в фактический верхний индекс 1, что нарушает мой json. Я хочу, чтобы ¹ отображался так же, как я пишу в строке, а не как надстрочный индекс.

Если я добавлю escape-символ, то он появится как: "вот мой верхний индекс: \¹"

Я не хочу использовать escape-символ, но я также не хочу, чтобы он преобразовывался в фактический верхний индекс. Есть ли способ заставить С# не выполнять преобразование юникода и оставить его буквально: «\ u00B9»?

заранее спасибо


person user1373121    schedule 24.06.2013    source источник


Ответы (3)


Если я правильно понимаю ваш вопрос... добавьте символ at (@) перед строкой, чтобы избежать обработки escape-последовательностей

 string s = @"here is my superscript: \u00B9";

http://msdn.microsoft.com/en-us/library/362314fe(v=vs.80).aspx

person NinjaNye    schedule 24.06.2013

Мне нравится ответ @NinjaNye, но другой подход состоит в том, чтобы использовать двойную обратную косую черту, чтобы сделать его буквальным. Таким образом string s = "here is my superscript: \\u00B9"

person Adrian Ratnapala    schedule 21.08.2013

рекомендуется кодировать строку перед отправкой на сервер. Вы можете кодировать с помощью base64 или URLEncode в клиенте и декодировать на стороне сервера.

person Wilker Iceri    schedule 24.06.2013