none
WinForm DataGridView 里显式的中文,复制到 Word 里面就变成了乱码 RRS feed

  • 问题

  • DataGridView 里面显式效果

    MPS50 系列

    复制到 Word 里面后

    MPS50 ϵ��

    PS:

    1. 复制到 Notepad 或 Sublime 里面时不会出现该问题

    2. 直接选中 Cell 后,Ctrl + C 复制的

    3. 怎么才能验证账户,支持发送图片?
    2017年7月7日 6:07

答案

全部回复

  • 没有熟手能帮忙指个路吗?
    2017年7月10日 1:21
  • Hi,

    感谢在MSDN论坛发帖。

    我测试了你的问题,并没有重现你的问题,下面是我的测试截图:

    根据我的了解,你这个问题是出现在保持编码和显示编码不一致,导致的结果。

    所以先检查一下你的datagridview的font用的是什么编码, 我建议你使用包含Unicode的font来存储.

     

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年7月10日 3:13
    版主
  • 感谢答复。

    我尝试将 DataGridView 的 Font 改成了 微软雅黑,但问题依然存在。

    “MPS50 系列”,复制到 Word 后显式为“MPS50 ϵP”。

    ConfigDataGridView.DefaultCellStyle.Font = new Font("微软雅黑", 11F);

    2017年7月12日 3:25
  • Hi 段成华,

    据我所知微软雅黑是支持unicode编码表。

    你有没有检查你这行代码有没有把Font给设置成微软雅黑?  你可以通过这个属性( DataGridViewCellStyle.Font )是查看一下,利用get 方法。

    你这样直接使用汉字进行初始化,会不会有什么问题,正常初始化一个字节,应该是通过下面的方法。

     // Make the font italic for row four.
        dataGridView1.Columns[4].DefaultCellStyle.Font = new Font(DataGridView.DefaultFont, FontStyle.Italic);
    

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年7月12日 7:52
    版主
  • Hi Hart Cheng,

    我测试了 DataGridView 的字体确实是“微软雅黑”。

    var dataGridViewFontName = ConfigDataGridView.DefaultCellStyle.Font.Name;
    // dataGridViewFontName == "微软雅黑"

    我也尝试了设定指定列的字体,不过复制到 Word 后依然乱码。

    ConfigDataGridView.Columns[1].DefaultCellStyle.Font = new Font("微软雅黑", 20F, GraphicsUnit.Pixel);
    var fontName = ConfigDataGridView.Columns[1].DefaultCellStyle.Font.Name;
    ConfigBindingSource.Add(new DisplayProperty("第 2 列的字体", fontName, 1, false, "Test", null, ""));


    2017年7月12日 9:00
  • Hi,

    你能提供一份可以重新问题的demo到 one drive 上面吗? 我来测试这个问题。

    我这测试你也看到了,是没有问题的。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年7月12日 9:04
    版主
  • https://1drv.ms/u/s!Aif7dwKwaed2gnTqbPC8RW6IOsRA
    注意是直接选中 Cell 后,Ctrl + C 复制的。
    2017年7月14日 6:32
  • Hi,

    下载你的代码,的确如你所说的那样。 在ctrl+v的时候,出现了乱码。

    经过我的测试,你是少了一个config文件,里面需要指定整个程序的编码形式。

    你可以使用下面的config文件内容。直接拷贝过去,问题就应该解决了。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
        </startup>
    </configuration>

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已建议为答案 Stanly Fan 2017年7月14日 9:01
    • 取消建议作为答案 段成华 2017年7月26日 0:51
    2017年7月14日 7:10
    版主
  • Hi Hart Cheng,

    我测试了你建议的修改 config 的方法,对于我的示例确实有效,但起作用的是这一句。

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />

    而我出现问题的程序为了兼容 XP 目标框架选择的是 .Net Framework 3.5,所以就不能用这种方法。


    2017年7月26日 1:00
  • Hi,

    我测你onedrive 上面的代码,里面应该不包含config文件。

    所以我就添加一个config文件,是config文件里面,哪句话起作用,我就没有测试了。

    XP系统已经不被微软支持,所以有关XP的问题,我这边是移到一般性讨论论坛。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年7月26日 5:42
    版主
  • 楼主:

    1)你可以直接仿造人家的样式在此处提出申请发送图片:https://social.msdn.microsoft.com/Forums/en-US/fa9f302f-f50f-4acf-a728-95ca3d1d7047/verify-account-39?forum=reportabug

    2)我下载了楼主的代码,无法重现此问题。请问楼主的操作系统是简体中文的吗?


    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report



    2017年7月26日 8:04
    版主
  • 1. 这个帖子已经 Locked,不过依然感谢你。

    2. 我的操作系统是中文 Windows 7 Service Pack 1。

    2017年8月1日 5:53
  • Hi Hart Cheng,

    这和 XP 系统关系不大,主要是 .Net Framework 版本的问题,新版本 Framework 确实不存在这个问题。

    2017年8月1日 5:56
  • Hi 段成华,

    很高兴听到,你已经找到问题所在,如果你的问题已经被解决了,请标记有用的回复作为答案。

    如果是.NET 版本的问题,你可以提交的问题到 connect 网址,那儿会有专门的人来解决bug的问题。


    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年8月1日 6:04
    版主
  • Hi Hart Cheng,

    这和 XP 系统关系不大,主要是 .Net Framework 版本的问题,新版本 Framework 确实不存在这个问题。

    如果方便的话,烦请告知升级到哪个版本可以彻底解决此问题,并烦请标记为答案哦,谢谢你O(∩_∩)O谢谢。

    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report



    2017年8月1日 11:26
    版主