2016-08-17 19 views
-1

私はAPIを使用しています。パラメータとして2文字列を渡します。 として、私は、プログラムの文字列を導入した場合:Eveythingで結構です文字列に特殊文字が含まれているかどうかを確認するには?

string a = "Madrid, Spain"; 

、APIレスポンスはOKです。 テキストボックスを使って同じ "Madrid、Spain"を紹介すると、すべてが変わります。

string b = TextBox1.Text; 

文字列bを使用してAPIを呼び出すと、私はRequest_Deniedを取得します。

本質的に文字列aと文字列bは同じ内容ですが、異なるものでなければなりません。

C#の文字列はnullで終了していないので、値を挿入するためにEnterキーを使用していたので、改行で終了する場合はString.EndsWith(Enviroment.NewLine)を使用してチェックしようとしました。私は文字列のchar []表現を取得しようとしましたが、特殊文字を取得できたかどうかを確認しましたが、文字列がないようです。

C#の文字列はUnicodeであり、一部のメソッドではTrim(char [])のようなASCIIを使用しているため、使用方法がわかりません。

主な目標は、文字列に含まれるすべての文字をASCIIまたはUnicodeとして見ることができるようにすることです。そのため、APIの問題の原因を確認できます。

編集:最終的に問題はAPIのようだったようですが、私が尋ねたように16進値を得ることができたので、新しいことを学びました。ありがとう

+3

「a == b」からどのような結果が得られますか? –

+1

あなたのコードを教えてください。 –

+0

"TextBox1.Text"に使用されているエンコーディングを知る必要があります。あなたのUI技術(Webフォーム、MVC、WinForms、WPFなど)について言及していないので、確実に言うのは少し難しいです。 –

答えて

0

あなたの文字の16進値を表示します。

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

"Characters"は少し正確ではありませんが、そのコードでは、文字列にUTF-16コード単位( 'char')のシーケンスが16進数で表示されます。 –

+0

不正確なことはどういう意味ですか?あなたがサイズについて話すなら、それはここでは問題ではないと思うx)私が知りませんでした他の何かについて考えていたかもしれません:) –

+0

「文字」の中間的な意味の一種は、セット。より正式な名前はコードポイントです。しかし、Unicodeでは、コードポイントを「結合」することで、文字とゼロまたはそれ以上の発音区別記号のすべての自然な組み合わせに対してコードポイントを持つことが回避されます。組み合わせの正式名称は書記(grapheme)です。今、符号化はコードポイント値をとり、それを格納された表現に変換する。各コードポイントは、コードユニットと呼ばれる1つまたは複数の記憶ユニットで符号化される。 UTF-16は、各Unicodeコードポイントを1つまたは2つの16ビットコード単位でエンコードします。 C#では、データ型は 'char'です。 –

関連する問題