c# - 当我使用非共享运行时构建 Monodroid 项目时获取编码失败

标签 c# character-encoding xamarin.android

我正在尝试在我的 Monodroid 应用程序中使用 DotNetZip 库。当我启用共享运行时构建选项时,一切似乎都运行良好。当我禁用共享运行时时,行

static System.Text.Encoding ibm437 = System.Text.Encoding.GetEncoding("IBM437");

生成异常(不支持编码名称“IBM437”)。我已经检查了“其他支持的编码”列表中的每个框,但它似乎没有帮助。有人有什么想法吗?

最佳答案

我遇到了完全相同的问题。

首先,确保您已在项目属性中添加“West”编码:

Xamarin Internationalization

如果这不起作用,问题是所需的 dll 没有被复制到 .apk 的程序集文件夹中。这应该会自动发生,但事实并非如此。我提交了一个错误,所以你可以看看它是否已修复:

Mono for Android / Xamarin Bugzilla

如果没有,这里有一个对我有用的解决方法(来自 Xamarin):

  1. 手动添加对 I18N.dll 和 I18N.West.dll 的引用
  2. 将两个 dll 的“复制本地”属性设置为“true”
  3. 添加以下虚拟代码以将 2 个 dll 添加到 .apk

    var ignore = new I18N.West.CP437();

  4. 确保“链接”设置为“无”

希望这对您有所帮助!

关于c# - 当我使用非共享运行时构建 Monodroid 项目时获取编码失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858690/

相关文章:

C# 参数化 Oracle 更新在 ExecuteNonQuery 上失败

php - MySQL存储特殊字符(Android、PHP也有涉及)

algorithm - 我们为什么要使用 Base64?

android - Xamarin xml 安卓 :onClick callback method

c# - Wrapped RadBusyIndi​​cator 内容中的 UIElements 为空

c# - Azure 移动服务同步上下文 : Adding custom parameters

java - Openshift JBoss 字符编码

xamarin - 如何使用 Xamarin 来包装 Web 应用程序,就好像它是 Android 的 native 应用程序一样?

c# - 用于 Android/MonoTouch System.Net.WebException : Request aborted 的单声道

c# - 从域中获取 SPF 记录