2011-01-31 132 views
0

我正在使用UTF8.GetString从入站流读取上下文,将其存储到数据库varchar类型的列,但它似乎我缺少特殊字符0xd 0xa。我该如何解决这个问题?UTF8.GetString带特殊字符(0xd 0xa)

感谢您的帮助!

编辑:入站流在字节表示

+0

你不能用nvarchar来代替吗? – 2011-01-31 17:07:43

+0

我假设你正在使用`Encoding.UTF8.GetString(byte [],int,int)`从输入字节数组中获取字符串。您确定0x0d和0x0a字符是否包含在您要转换的字节范围内?如果它们在一行的末尾,那么在阅读时通常会将它们从字符串中删除。 – 2011-01-31 17:35:29

回答

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输入,也许这是剥离它,相信它是可以忽略的空白?