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

我正在开发一个项目,该项目从 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 中不带问号的阿拉伯文本 谢谢


噜噜哒
浏览 77回答 1
1回答

蛊毒传说

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

哈士奇WWW

我已经设法找到解决这个问题的方法首先转换为 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);        }
打开App,查看更多内容
随时随地看视频慕课网APP