VS2010复制到Word后中文出现乱码的问题

最近把VS更新到2010了,发现复制到Word中 会出现乱码,如图

网上虽然有解决方法,比如说,先复制到记事本中,然后在复制到Word中,但是一般从vs里面复制出来,然后粘贴到Word中主要是想代码在Word中也可以显示高亮 根据网上找的资料, 写了一个程序

下面提供我写好的程序,最低需要.Net3.5运行库 使用方法:首先从VS2010内复制出代码,然后打开程序,会自动访问剪切板,并处理乱码

[buy]小提示Win7可以直接在程序上面选择右键,选择“附到开始菜单”[/buy]
[download id=”17″]


下面是主要源码:

this.TopMost = true;
timer1.Start();
//必须先引用:using System.Text.RegularExpressions;
//取得剪贴板內容
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject.GetDataPresent(DataFormats.Rtf))
{
    //取出RTF格式
    string rtf = dataObject.GetData(DataFormats.Rtf) as string;
    //以Regex.Replace去除多余的乱码字符
    string fixedRtf =
    Regex.Replace(rtf, @"\uinput2(?\u-?d*)s..",
        (m) =>
        {
return m.Groups["uc"].Value + "?";
        });
    //另建新DataObject
    DataObject newDataObject = new DataObject();
    //RTF格式用修正后的字符串,其他的保持原值
    foreach (String t in dataObject.GetFormats())
        newDataObject.SetData(t,
t == "Rich Text Format" ? fixedRtf :
dataObject.GetData(t));
    try
    {
        //将修正后內容写入剪贴板
        Clipboard.SetDataObject(newDataObject, true);
    }
    catch (Exception a)
    {
        MessageBox.Show(a.ToString());
    }
}

2 Replies to “VS2010复制到Word后中文出现乱码的问题”

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据