You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin C#连接SQL Server安卓端遇Encoding 1254缺失问题求助

解决Xamarin Android中Encoding 1254缺失问题

问题根源

Xamarin Android默认只预装了少量通用编码集,像1254(土耳其语Windows编码)这类非通用编码需要手动引入对应的程序集才能使用,这就是真机上报错的核心原因。

具体解决步骤

1. 安装编码扩展NuGet包

在你的Xamarin项目中安装System.Text.Encoding.CodePages包,它包含了所有额外的编码定义(包括1254):

  • 右键项目 → 管理NuGet程序包
  • 搜索System.Text.Encoding.CodePages,选择最新稳定版安装

2. 启动时注册编码集

在Android项目的MainActivity的OnCreate方法(或应用初始化的入口处),添加代码注册编码:

// 加载并注册额外编码集
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
// 可添加验证代码,确认1254编码已加载
var turkishEncoding = System.Text.Encoding.GetEncoding(1254);

这段代码会让应用在启动时加载CodePages包中的编码定义,确保运行时能找到1254编码。

3. 检查SQL Server连接配置

如果连接字符串涉及字符编码设置,确保与1254兼容,或直接使用UTF-8(若服务器支持)避免编码不匹配:

var connStr = "Server=你的VPN内服务器地址;Database=目标库;User Id=账号;Password=密码;";

(注:使用SqlClient时无需额外指定charset,只要数据库的排序规则支持土耳其语字符即可)

4. 验证VPN网络连通性

确保安卓手机通过VPN能正常访问SQL Server的默认端口1433,可以用telnet工具测试,排除网络层面的连接障碍。

额外排查点

如果安装NuGet后仍报错,检查项目链接器设置:

  • 右键Android项目 → 属性 → Android选项 → 链接器行为
  • 若设置为“SDK程序集仅”或“全部程序集”,可能会剥离编码相关程序集,可先改为“不链接”测试,确认正常后再配置链接规则保留必要的编码程序集。

内容的提问来源于stack exchange,提问作者yunus demirbas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:12:03