读书人

急以Html格式复制黏贴时中文内容变成

发布时间: 2012-04-28 11:49:53 作者: rapoo

急!以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格式复制黏贴文字和图片的方法。


[解决办法]

C# code
            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); 

读书人网 >C#

热点推荐