为了账号安全,请及时绑定邮箱和手机立即绑定

无法在不丢失阿拉伯值的情况下将 wpf 中的数据网格转换为 csv

无法在不丢失阿拉伯值的情况下将 wpf 中的数据网格转换为 csv

C#
噜噜哒 2023-12-17 20:00:41
我正在开发一个项目,该项目从 JSON API 获取数据并将其显示在数据网格中,用户可以根据需要修改值,然后导出为 CSV,数据包含阿拉伯文本,导出 CSV 后会变成问号而不是实际的阿拉伯文本!!!这是一个参考代码:        private void ExportToCSV(DataGrid dg)        {            dg.SelectAllCells();            dg.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;            ApplicationCommands.Copy.Execute(null, dg);            dg.UnselectAllCells();            String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);            //Save Location for the csv (not the actual Location)            string SaveLocation = @"C:\Users\username\...\values"  + ".csv";            //Overwriting previous values after exporting            File.Delete(SaveLocation);            File.AppendAllText(SaveLocation, result,Encoding.UTF8);        }我尝试使用不同的编码,例如 ASCII 和 Unicode,但未显示所需的结果,即 CSV 中不带问号的阿拉伯文本 谢谢
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

查看了解如何从剪贴板获取 Unicode。



查看完整回答
反对 回复 2023-12-17
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

我已经设法找到解决这个问题的方法


首先转换为 Unicode 文本,然后替换 '\t'与“,” 然后,将其另存为 CSV,代码如下:


        private void ExportToCSV(DataGrid dg)

        {

            dg.SelectAllCells();


            dg.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;

            ApplicationCommands.Copy.Execute(null, dg);


            dg.UnselectAllCells();

            String result =(string)Clipboard.GetData(DataFormats.UnicodeText);

            string resultCSV = result.Replace('\t',',');

            //Save Location for the csv (not the actual Location)

            string SaveLocation = @"C:\Users\username\...\values"  + ".csv";


            //Overwriting previous values after exporting

            File.Delete(SaveLocation);

            File.AppendAllText(SaveLocation, result,Encoding.UTF8);


        }


查看完整回答
反对 回复 2023-12-17
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信