急!以Html格式复制黏贴时,中文内容变成乱码--冰天雪地,跪求仙人指路
以Html格式复制黏贴时,中文内容变成乱码,代码如下:
StringBuilder sb = new StringBuilder();
sb.Append(@"Version:0.9
StartHTML:71
EndHTML:170
StartFragment:140
EndFragment:160
StartSelection:140
EndSelection:160");
sb.Append("<html><body>");
sb.AppendFormat("<span>{0}</span>", "中国");
sb.AppendFormat("<span>{0}</span>", "China");
sb.Append("</body></html>");
Clipboard.SetData(DataFormats.Html, sb.ToString());
运行的结果是“中国”两个字变成了“??”而China是可以正常显示出来的。
网上很多朋友说可以添加
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">
但我试过了,似乎不起作用。希望有高人可以指点迷津啊~~
感谢大牛assky124在我的上一篇帖子里提供的以html格式复制黏贴文字和图片的方法。
[解决办法]
String nativeHTMLString = @"Version:0.9 StartHTML:<<<<<<<1 EndHTML:<<<<<<<2 StartFragment:<<<<<<<3 EndFragment:<<<<<<<4 StartSelection:<<<<<<<3 EndSelection:<<<<<<<4 <!DOCTYPE> <HTML> <HEAD> <TITLE> The HTML Clipboard and special characters</TITLE> </HEAD> <BODY> <UL> <!--StartFragment --> <LI> The Fragment with special characters Ä Ö Ü ä ö ü ß 汉字</LI> <!--EndFragment --> </UL> </BODY> </HTML>"; string utf8EncodedHTMLString = Encoding.GetEncoding(0).GetString(Encoding.UTF8.GetBytes(nativeHTMLString)); StringBuilder sb = new StringBuilder(); sb.Append(utf8EncodedHTMLString); sb.Replace("<<<<<<<1", (utf8EncodedHTMLString.IndexOf("<HTML>") + "<HTML>".Length).ToString("D8")); sb.Replace("<<<<<<<2", (utf8EncodedHTMLString.IndexOf("</HTML>")).ToString("D8")); sb.Replace("<<<<<<<3", (utf8EncodedHTMLString.IndexOf("<!--StartFragment -->") + "<!--StartFragment -->".Length).ToString("D8")); sb.Replace("<<<<<<<4", (utf8EncodedHTMLString.IndexOf("<!--EndFragment -->")).ToString("D8")); string clipboardString = sb.ToString(); Clipboard.SetText(clipboardString, TextDataFormat.Html);