【求助】网页源码从byte[]到string再到byte[]
环境:VS2005 C# winform
我在做一个C#下IE MIME过滤,针对text/html数据。流程可以概括为:
1:IE传给我byte[]数据
2:我将byte[]数据转换成string
3: 我处理string
4:我将处理过的string再转换成byte[]传给IE
C# code
我觉得我的两个转换函数没什么问题了。但事实上在转换一些特殊字符时仍然可能出现错误。比如我发现有时候源码里的"*"字符被转换成了不可见字符。导致html/*注释*/出现错误,严重影响到网页内容的正确性。
byte[]-string-byte[]这里水很深啊,还请大虾们传授些经验给小弟,谢谢!
我在做一个C#下IE MIME过滤,针对text/html数据。流程可以概括为:
1:IE传给我byte[]数据
2:我将byte[]数据转换成string
3: 我处理string
4:我将处理过的string再转换成byte[]传给IE
C# code
private string BytesToString(byte[] data,out string charSet) { charSet = ""; string sHtml = Encoding.Default.GetString(data); string CharSet = ""; Regex rg = new Regex("<meta.+?charset=(?<name>.*?)\".*?>", RegexOptions.IgnoreCase); Match m = rg.Match(sHtml); if(m.Success) { CharSet = m.Groups["name"].Value; charSet = CharSet; } if (CharSet.Length > 0) { sHtml = Encoding.GetEncoding(CharSet).GetString(data); } return sHtml; } private byte[] StringToBytes(string text,string charSet) { if (charSet.Length > 0) { return Encoding.GetEncoding(charSet).GetBytes(text); } else { return Encoding.Default.GetBytes(text); } }
我觉得我的两个转换函数没什么问题了。但事实上在转换一些特殊字符时仍然可能出现错误。比如我发现有时候源码里的"*"字符被转换成了不可见字符。导致html/*注释*/出现错误,严重影响到网页内容的正确性。
byte[]-string-byte[]这里水很深啊,还请大虾们传授些经验给小弟,谢谢!
作者: Win32FanEx 发布时间: 2011-06-15
肯定是不对的。当你把byte[]转换为string,那么肯定要丢失一些信息了,然后再转回byte[],也肯定丢失一些信息了。
不要用string当作什么中间保存机制。要想保存,就用真实的byte[]来保存原始数据。
不要用string当作什么中间保存机制。要想保存,就用真实的byte[]来保存原始数据。
作者: sp1234 发布时间: 2011-06-15
楼上的师傅:
我处理的是text/html类型数据。可以肯定,最初数据是字符串--即网页程序员写的网页源码。但我从IE那里得到的是byte[]。比如我要过滤一下源码内容,我必需得转换成string才行。然后再转成byte[]提供给IE.
请您继续指点。
我处理的是text/html类型数据。可以肯定,最初数据是字符串--即网页程序员写的网页源码。但我从IE那里得到的是byte[]。比如我要过滤一下源码内容,我必需得转换成string才行。然后再转成byte[]提供给IE.
请您继续指点。
作者: Win32FanEx 发布时间: 2011-06-15