我正在为Xamarin
Visual Studio 2017
处理一个应用程序。我正在尝试在Android
和iOS
直播播放器设备上测试我的应用。
当我尝试运行它时,我的设备上出现以下错误(Android
和iOS
):
级别=错误,标题=可视化错误,消息=编码1252数据 无法找到。确保您拥有正确的国际代码集 程序集已安装并已启用(NotSupportedException异常)
我通过Google
搜索找到了类似的问题,但在进行更改后,它仍然无法运行。我已经检查了两种设备的所有国际化选项,我甚至直接保存为UTF-8
编码,因为我认为它可能是编码windows-1252
的问题。我还为I18N.dll
引用了I18N.West.dll
。
非常感谢任何帮助。谢谢。
更新
我已经能够进一步缩小这个问题。
using (SqlConnection sqlConn = new
SqlConnection(Configuration.ConnectionString))
{
//sqlConn.Open();
}
.open
导致编码错误。在评论之后,应用程序将在实时设备上运行,但是,我现在得到:
Level = Error,Title = Uncaught Exception,Message =编码1252数据无法找到。确保已安装并启用了正确的国际代码集程序集。 (NotSupportedException异常)
Visual Studio 2017
会引发以下错误
System.Reflection.TargetInvocationException:调用目标抛出了异常。
at
using (SqlConnection sqlConn = new
SqlConnection(Configuration.ConnectionString))
它会在尝试从上面的using
语句中的数据库中提取时发生。我正在使用SQL Server 2008 R2
。我所能说的是,使用Android
和iOS
向SQL Server发送和接收时遇到问题。
更新2:
使用了一些Exception Handlers
之后,我把它归结为这个内部异常:
{System.NotSupportedException:无法找到编码1252数据。确保已安装并启用了正确的国际代码集程序集。 在< 896ad1d315ca4ba7b117efb8dacaedcf>中的System.Text.Encoding.GetEncoding(System.Int32代码页)[0x0023f]:0 在Mono.Data.Tds.TdsCharset.GetEncodingFromSortOrder(System.Int32 sortId)[0x00022] in:0 在Mono.Data.Tds.TdsCharset.GetEncodingFromSortOrder(System.Byte [] collation)[0x00006] in:0 在Mono.Data.Tds.TdsCharset.GetEncoding(System.Byte [] collation)[0x00008] in:0 在Mono.Data.Tds.Protocol.Tds.ProcessEnvironmentChange()[0x00229] in:0 在Mono.Data.Tds.Protocol.Tds.ProcessSubPacket()[0x00129] in:0 在Mono.Data.Tds.Protocol.Tds.NextResult()[0x00039] in:0 在Mono.Data.Tds.Protocol.Tds.SkipToEnd()[0x00000] in:0 在Mono.Data.Tds.Protocol.Tds70.Connect(Mono.Data.Tds.Protocol.TdsConnectionParameters connectionParameters)[0x0058e] in:0 在Mono.Data.Tds.Protocol.Tds80.Connect(Mono.Data.Tds.Protocol.TdsConnectionParameters connectionParameters)[0x00000] in:0 在< 868a6461786e4884ac572c5e90a6b7fd>中的System.Data.SqlClient.SqlConnection.Open()[0x00245]:0 在System.Data.Common.DbDataAdapter.QuietOpen(System.Data.IDbConnection连接,System.Data.ConnectionState& originalState)[0x0000c] in< 868a6461786e4884ac572c5e90a6b7fd>:0 at System.Data.Common.DbDataAdapter.FillInternal(System.Data.DataSet dataset,System.Data.DataTable [] datatables,System.Int32 startRecord,System.Int32 maxRecords,System.String srcTable,System.Data.IDbCommand command,System .Data.CommandBehavior行为)[0x0002d]在< 868a6461786e4884ac572c5e90a6b7fd>中:0 在System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet dataSet,System.Int32 startRecord,System.Int32 maxRecords,System.String srcTable,System.Data.IDbCommand command,System.Data.CommandBehavior behavior)[0x00069]在< 868a6461786e4884ac572c5e90a6b7fd>中:0 在System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet dataSet)[0x00029] in< 868a6461786e4884ac572c5e90a6b7fd>:0 at(wrapper managed-to-native)System.Reflection.MonoMethod:InternalInvoke(System.Reflection.MonoMethod,object,object [],System.Exception&) at System.Reflection.MonoMethod.Invoke(System.Object obj,System.Reflection.BindingFlags invokeAttr,System.Reflection.Binder binder,System.Object [] parameters,System.Globalization.CultureInfo culture)[0x00032] in< 896ad1d315ca4ba7b117efb8dacaedcf> :0}
发生于:
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);