Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 读取带有Unicode字符的csv文件时引发异常_C# 4.0_Csv_Odbc_Sqldatasource_Dataview - Fatal编程技术网

C# 4.0 读取带有Unicode字符的csv文件时引发异常

C# 4.0 读取带有Unicode字符的csv文件时引发异常,c#-4.0,csv,odbc,sqldatasource,dataview,C# 4.0,Csv,Odbc,Sqldatasource,Dataview,Csv文件可能具有多语言字符 下面是我在DataView List<BulkUser> _lstBulkUser = new List<BulkUser>(); DataView BlukUserView; try { using (SqlDataSource _SqlDataSource = new SqlDataSource())

Csv文件可能具有多语言字符

下面是我在
DataView

List<BulkUser> _lstBulkUser = new List<BulkUser>();
            DataView BlukUserView;

            try
            {
                using (SqlDataSource _SqlDataSource = new SqlDataSource())
                {
                    //_SqlDataSource.ConnectionString = "Dsn=outlook;dbq=D:\\selvam\\projectlist\\lates\\trunk\\SLVconsoleApp\\SLVconsoleApp.Web\\Uploads\\CSVFiles;defaultdir=D:\\selvam\\projectlist\\lates\\trunk\\SLVconsoleApp\\SLVconsoleApp.Web\\Uploads\\CSVFiles;driverid=27;fil=text;maxbuffersize=2048;pagetimeout=5";
                    _SqlDataSource.ConnectionString = "Dsn=" + ConfigurationManager.AppSettings["OutlookDns"].ToString() + ";dbq=" + ConfigurationManager.AppSettings["OutlookFileFolder"].ToString() + ";defaultdir=" + ConfigurationManager.AppSettings["OutlookFileFolder"].ToString() + ";driverid=27;fil=text;maxbuffersize=2048;pagetimeout=5";
                    _SqlDataSource.SelectCommand = "SELECT [First Name] As First_Name, [Last Name] AS LAST_NAME, Company, [E-mail Address] AS EMAILID FROM [" + Filename + "]";
                    _SqlDataSource.ProviderName = "System.Data.Odbc";
                    BlukUserView = (DataView)_SqlDataSource.Select(DataSourceSelectArguments.Empty);
                    int i = 1;
                    _lstBulkUser = (from value in BlukUserView.Table.Select() select new BulkUser { ID = Convert.ToString(i++), FirstName = Convert.ToString(Encoding.UTF8.GetString((byte[])value["First_Name"])), LastName = value["LAST_NAME"].ToString(), EmailId = value["EMAILID"].ToString(), Company = value["Company"].ToString() }).ToList();
                    if (File.Exists(ConfigurationManager.AppSettings["OutlookFileFolder"].ToString() + "\\" + Filename))
                    {
                        File.Delete(ConfigurationManager.AppSettings["OutlookFileFolder"].ToString() + "\\" + Filename);
                    }
                }
            }
            catch (Exception ex)
            { 
            }
List lstBulkUser=newlist();
DataView BlukUserView;
尝试
{
使用(SqlDataSource\u SqlDataSource=new SqlDataSource())
{
//_SqlDataSource.ConnectionString=“Dsn=outlook;dbq=D:\\selvam\\projectlist\\lates\\trunk\\SLVconsoleApp\\SLVconsoleApp.Web\\Uploads\\CSVFiles;defaultdir=D:\\selvam\\projectlist\\lates\\trunk\\SLVconsoleApp.Web\\Uploads\\CSVFiles;driverid=27;fil=text;maxbuffersize=2048;pagetimeout=5”;
_SqlDataSource.ConnectionString=“Dsn=”+ConfigurationManager.AppSettings[“OutlookDns”].ToString()+“dbq=”+ConfigurationManager.AppSettings[“OutlookFileFolder”].ToString()+“defaultdir=”+ConfigurationManager.AppSettings[“OutlookFileFolder”].ToString()+“driverid=27;fil=text;maxbuffersize=2048;pagetimeout=5”;
_SqlDataSource.SelectCommand=“选择[First Name]作为名字,[Last Name]作为姓氏,选择公司,[E-mail Address]作为来自[“+Filename+”]”的EMAILID;
_SqlDataSource.ProviderName=“System.Data.Odbc”;
BlukUserView=(DataView)_SqlDataSource.Select(DataSourceSelectArguments.Empty);
int i=1;
_lstBulkUser=(从BlukUserView.Table.Select()中的值选择新的BulkUser{ID=Convert.ToString(i++),FirstName=Convert.ToString(Encoding.UTF8.GetString((byte[])value[“First_Name”]),LastName=value[“LAST_Name”]。ToString(),EmailId=value[“EmailId”]。ToString(),Company=value[“Company”]。ToString())。ToList();
if(File.Exists(ConfigurationManager.AppSettings[“OutlookFileFolder”].ToString()+“\\”+文件名))
{
File.Delete(ConfigurationManager.AppSettings[“OutlookFileFolder”].ToString()+“\\”+文件名);
}
}
}
捕获(例外情况除外)
{ 
}
它抛出U
nable,将“System.String”类型的对象强制转换为“System.Byte[]”类型。

即使我尝试了Unicode字符,它也不是!我如何克服这个问题

下面是csv文件的屏幕截图


CSV不支持使用多语言字符。我已检查到Ms office 2010


最好保存为xls或xlsx。处理此情况的最简单方法。

最好张贴触发此错误的输入条件,以便快速获得帮助。随附屏幕截图。请看一看。我不知道你的图片上显示的语言(不知道语言,逻辑上也不知道编码)。通常,在读取不同语言(而不是程序中默认编码系统所记录的语言)时触发的错误是由于选择了错误的编码(您应该知道应该应用哪种编码)引起的。在您的特定代码中,我不确定对字节进行强制转换的意义何在(究竟是什么引起了错误)。@varocabas在对该XL中的日语字符进行编码时,实际上会抛出该错误。我需要绑定的名字,姓氏,公司和电子邮件地址可能在不同的语言。所以我需要unicode支持。这是我的实际问题。如果你有不同的编码,你必须考虑不同的编码(知道给定文本块的确切编码根本不是一件容易的事);在任何情况下,如果选择了错误的编码,都应该得到一堆奇怪的符号,而不是一个错误。同样,这一行对字节的转换似乎是错误的(实际上这就是错误所说的)。我不习惯这种特殊情况;但是如果你发布了一个相关的输入集,我(或其他任何人)可能会做一个快速测试来帮助你。