VS2010复制代码到word时出现中文乱码的解决办法(转)

直接复制VS2010的代码到Word里面去时,汉字会出现如下乱码,虽然可以采用记事本打开然后复制的方法,但是这样就失去了高亮色,不是我们想要的,下面的小程序就是解决这个问题的。

程序运行时截图

if (dataObject.GetDataPresent(DataFormats.Rtf))
{
//取¨?出?RTF格?式º?
string rtf = dataObject.GetData(DataFormats.Rtf) as string;
//以°?Regex.Replace去¨£¤除y多¨¤余®¨¤字Á?元a(註]: 不?管¨¹是º?否¤?有®D問?題
}

使用时,先正常复制代码到剪贴板,然后点击“乱码修正”按钮,最后直接粘贴到Word里面就不会有乱码了。

付下面的代码

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 
10 namespace WindowsFormsApplication2
11 {
12     public partial class Form1 : Form
13     {
14         public Form1()
15         {
16             InitializeComponent();
17         }
18 
19         private void button1_Click(object sender, EventArgs e)
20         {
21             //取得剪贴板内容
22             IDataObject dataObject = Clipboard.GetDataObject();
23             if (dataObject.GetDataPresent(DataFormats.Rtf))
24             {
25                 //取出RTF格式
26                 string rtf = dataObject.GetData(DataFormats.Rtf) as string;
27                 //以Regex.Replace去除多余字元(註: 不管是否有問題,一律強制處理)
28                 string fixedRtf =
29                 System.Text.RegularExpressions.Regex.Replace(rtf, @"\\uinput2(?<uc>\\u-?\d*)\s..",
30                 (m) =>
31                 {
32                     return m.Groups["uc"].Value + "?";
33                 });
34                 //另建新DataObject物件
35                 DataObject newDataObject = new DataObject();
36                 //RTF格式用修正後的字串,其餘依原值
37                 foreach (String t in dataObject.GetFormats())
38                     newDataObject.SetData(t,
39                     t == "Rich Text Format" ? fixedRtf :
40                     dataObject.GetData(t));
41                 //将修正内容写入剪贴板
42                 Clipboard.SetDataObject(newDataObject, true);
43                 MessageBox.Show("中文乱码修正成功!\n现在您可以直接到Word里按Ctrl+V粘贴了!", "成功");
44             }
45             else
46                 MessageBox.Show("您粘贴的不是代码!", "错误");
47         }
48     }
49 }

 

posted on 2015-04-07 15:05  chulin0217  阅读(872)  评论(0编辑  收藏  举报