2011-01-31 27 views
0

UTF8.GetStringを使用してインバウンドストリームからコンテキストを読み取り、データベースのvarchar型の列に格納していますが、特殊文字0xd 0xaが見つからないようです。どうすれば修正できますか?UTF8.GetStringは特殊文字(0xd 0xa)を取り除きます

ありがとうございました!

編集:インバウンドストリームはバイトで表現された単一の文字ではありません

+0

代わりにnvarcharを使用することはできませんか? –

+0

'Encoding.UTF8.GetString(byte []、int、int)'を使って、入ってくるバイト配列から文字列を取得していると仮定します。あなたは0x0dと0x0a文字があなたが変換しているバイトの範囲に含まれていることを確信していますか?それらが行末にある場合は、読み込み時に文字列からそれらを取り除くのが一般的です。 –

答えて

3

- それは、「キャリッジリターン」U + 000Dと「改行」U + 000A ...とUTF-8デコーダ2つの文字だが、確かにそれらを処理することができます。サンプルコード:

using System; 
using System.Text; 

class Test 
{ 
    static void Main() 
    { 
     byte[] bytes = { 0x41, 0xd, 0xa, 0x42 }; 
     string text = Encoding.UTF8.GetString(bytes); 
     Console.WriteLine(text == "A\r\nB"); 
    } 
} 

データベースで文字が削除されていませんか? XML入力がある場合は、それを削除して、それが無視できる空白であると信じるでしょうか?

+0

それは私の間違いでした。私はSQLのセヴァーバーの結果ペインからコピーとペーストを行いました。明らかに何らかの理由で改行をコピーしません。 – NINIThePug