首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

急以Html格式复制黏贴时,汉语内容变成乱码-冰天雪地,跪求仙人指路

2013-10-22 
急!以Html格式复制黏贴时,中文内容变成乱码--冰天雪地,跪求仙人指路以Html格式复制黏贴时,中文内容变成乱

急!以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);



参考http://msdn.microsoft.com/en-us/library/windows/desktop/ms649015(v=vs.85).aspx

热点排行