2011-01-31 2 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 может, конечно, справиться с ними. Код продукта:

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 serever, по-видимому, она не копирует фид строки по какой-либо причине – NINIThePug