解决vs2010到word复制产生的中文乱码

本文介绍了一个VS2010复制包含中文的代码至Word时出现乱码的问题,并提供了一个C#程序解决方案,该程序能够移除剪贴板中的多余字符,从而解决乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章提到,我成功的用word解决了代码高亮与对齐的问题,现在新的问题出现了,如果程序中有中文,那么,从vs2010到word复制过程中,会产生乱码,如下所示:

#include "stdio.h"

int main(){

   printf("?¤??¨ª?¨?¨°¨¦?°?¡ãn");

   return 0;

}

这又怎么办呢?

我上网搜索了一下,果然有高手解决了此问题,据说,这个问题是vs2010在每个中文后都会加上一些其他的信息,导致在word中显示的是乱码,而这位大牛,给出了完美的解决方案,他写了个c#程序,从剪切板读取字符串,然后把那些多余的信息去掉,这样再粘贴就没事了,他的代码如下:

 

//每個中文字後會連著一到兩個多餘字元
private void btnFix_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 =
            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);
    }
}

 而又有人,把这个编译后提供可执行程序,可以从这里下载:

http://www.boxcn.net/shared/zil2au0i9j

这样,就完美的解决了中文乱码问题。

原文链接:http://blog.darkthread.net/blogs/darkthreadtw/archive/2010/06/03/fix-vs2010-clipboard-bug.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值