【发布时间】:2018-11-08 05:36:24
【问题描述】:
我正在为Visual Studio 2017 处理Xamarin 中的应用程序。我正在尝试在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=Encoding 1252 数据找不到。确保您安装并启用了正确的国际代码集程序集。 (NotSupportedException)
而Visual Studio 2017 抛出以下错误
System.Reflection.TargetInvocationException:调用的目标已抛出异常。
在
using (SqlConnection sqlConn = new
SqlConnection(Configuration.ConnectionString))
它发生在它试图从上面的using 语句中的数据库中提取的那一刻。我正在使用SQL Server 2008 R2。我只能说,使用Android 和iOS 向SQL Server 发送和接收数据时存在问题。
更新 2:
在使用了一些Exception Handlers 之后,我将其归结为这个内部异常:
{System.NotSupportedException:找不到编码 1252 的数据。确保您安装并启用了正确的国际代码集程序集。 在 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] 中:0 在 Mono.Data.Tds.Protocol.Tds.ProcessSubPacket () [0x00129] 中: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 在 System.Data.SqlClient.SqlConnection.Open () [0x00245] 在 :0 在 System.Data.Common.DbDataAdapter.QuietOpen (System.Data.IDbConnection 连接,System.Data.ConnectionState& originalState) [0x0000c] 在 :0 在 System.Data.Common.DbDataAdapter.FillInternal(System.Data.DataSet 数据集,System.Data.DataTable[] 数据表,System.Int32 startRecord,System.Int32 maxRecords,System.String srcTable,System.Data.IDbCommand 命令,系统.Data.CommandBehavior 行为)[0x0002d] in :0 在 System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet 数据集,System.Int32 startRecord,System.Int32 maxRecords,System.String srcTable,System.Data.IDbCommand 命令,System.Data.CommandBehavior 行为)[0x00069]在 :0 在 System.Data.Common.DbDataAdapter.Fill (System.Data.DataSet dataSet) [0x00029] 在 :0 在(包装器托管到本机) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) 在 System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] 参数, System.Globalization.CultureInfo 文化) [0x00032] 在 中: 0 }
发生在:
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
【问题讨论】:
-
请阅读this为您的应用添加
IUncaughtExceptionHandler,并获取具体例外情况。 -
@JoeLv-MSFT 根据您的要求,我使用了一些异常处理程序,而内部异常是我的主要问题。
标签: android ios xamarin encoding visual-studio-2017