2016-08-17 10 views
-1

Я использую API, я передаю 2 строки в качестве параметров. Если я ввожу строки программно, как:Как проверить, содержит ли строка специальные символы?

string a = "Madrid, Spain"; 

Eveything прекрасно, ответ API ОК. Но все меняется, когда я использую текстовое поле, чтобы представить тот же «Мадрид, Испания».

string b = TextBox1.Text; 

Если я использую строку b для вызова API, я получаю Request_Denied.

По существу строка a и строка b имеют одинаковый контент, но что-то должно быть разным.

Строки C# не имеют нулевого конца, я пытался проверить с помощью String.EndsWith(Enviroment.NewLine), если он заканчивается символом новой строки, поскольку я использовал ввод, чтобы вставить значение. Я попытался получить представление char [] строки, чтобы увидеть, удалось ли мне получить специальные символы, но, похоже, их нет.

Поскольку строка в C# является Unicode, а некоторые методы используют ASCII, например Trim (char []), я не уверен, как их использовать.

Моя основная цель - уметь видеть все символы, содержащиеся в строке, как ASCII или Unicode, поэтому я могу проверить, что вызывает проблему с API.

Редактировать: В конце концов, похоже, проблема связана с API, но мне удалось получить шестнадцатеричное значение, как я спросил, поэтому я узнал что-то новое. Спасибо

+3

Какой результат вы получаете от 'a == b'? –

+1

показать нам свой код. –

+0

Вам нужно знать кодировку, используемую для «TextBox1.Text». Поскольку вы не упомянули свою технологию пользовательского интерфейса (веб-формы, MVC, WinForms, WPF и т. Д.), Немного сложно сказать с уверенностью. –

ответ

0

Чтобы увидеть шестнадцатеричное значение ваших символов.

foreach (char c in "Hello World !") 
    Console.WriteLine(((int)c).ToString("X")); 
+0

«Символы» немного неточны, но да, этот код покажет последовательность кода UTF-16 ('char') в строке как шестнадцатеричные значения. –

+0

Что вы подразумеваете под неточно? Если вы говорите о размере, я не думаю, что это проблема здесь. X) Возможно, вы думали о чем-то другом, о котором я не знаю :) –

+0

Тип среднего знака «символ» - это элемент персонажа задавать. Более формальное имя для этого является кодовым. Тем не менее, Unicode избегает наличия кодового пункта для каждой естественной комбинации букв и ноль или более диакритических знаков путем «комбинирования» кодовых точек. Формальное название комбинации - графема. Теперь кодировка берет значение кодовой точки и преобразует ее в сохраненное представление. Каждая кодовая точка кодируется в одном или нескольких единицах хранения, называемом блоком кода. UTF-16 кодирует каждый код Unicode в одном или двух 16-разрядных кодовых единицах. В C# тип данных - 'char'. –

Смежные вопросы