天天看点

VS2010的代码粘贴到Word里面的汉字乱码修正问题

直接复制VS2010的代码到Word里面去时,汉字会出现乱码,

虽然可以采用记事本打开然后复制的方法,但是这样就失去了高亮色,不是我们想要的,      
下面的小程序就是解决这个问题的。      
程序截图:


        
VS2010的代码粘贴到Word里面的汉字乱码修正问题
VS2010的代码粘贴到Word里面的汉字乱码修正问题
使用时,先正常复制代码到剪贴板,然后点击“乱码修正”按钮,最后直接粘贴到Word里面就不会有乱码了。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;   namespace VS中文乱码修复程序 {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }           privatevoid button乱码修正_Click(object sender, EventArgs e)         {             //取得剪贴板内容             IDataObject dataObject = Clipboard.GetDataObject();             if (dataObject.GetDataPresent(DataFormats.Rtf))             {                 //取出RTF格式                 string rtf = dataObject.GetData(DataFormats.Rtf) as string;                 //以Regex.Replace去除多余字元(註: 不管是否有問題,一律強制處理)                 string fixedRtf =                   System.Text.RegularExpressions.Regex.Replace(rtf, @"\\uinput2(?<uc>\\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));                 //将修正内容写入剪贴板                 Clipboard.SetDataObject(newDataObject, true);                 MessageBox.Show("中文乱码修正成功!\n现在您可以直接到Word里按Ctrl+V粘贴了!", "成功");             }             else                 MessageBox.Show("您粘贴的不是代码!","错误");         }