【求解】关于asp.net编程中的编码格式

fuda_1985 2010-06-28 05:31:06
现在手头上的一个项目,要求读取本地的一个txt文本,格式为:以逗号分隔,内容为字母数字或下划线组成的字符串,需要一条条写入数据库。
实现为先将txt上传至服务器,在后台程序读取,然后做正则验证。
后台读取与正则如下所示:

     StreamReader sr = File.OpenText(filePath);
while ((input = sr.ReadLine()) != null)
{
nodeContext = nodeContext + input;
}
sr.Close();
Regex re = new Regex("^[A-Za-z0-9_,]+$", RegexOptions.IgnoreCase);

if (!re.IsMatch(nodeContext))
{
return false;
}

本地系统为XP系统,在本地运行时,txt文档中如有全角字符,读取时,全角字符将会变为乱码,验证通不过。
服务器系统为windows 2003,上传至服务器后,txt文档中如有全角字符,读取时,全角字符会变为空字行串。也就是当文档中是abcC,def,123在服务器读取时会变为abcdef,123(代码中在读取txt的时候写入日志了,查看得到的字符串),验证通过,程序逻辑错误。。。

很显然的为编码格式问题,OpenText的函数说明是:打开现有UTF-8编码文本文件以进行读取。我猜测编码格式为当前系统的默认编码方式(很杯具,服务器上的vs版本和我机器上的版本不一致,不能调试,一般情况下应该都为UTF-8,)。我在本地测试了一下按编码读取,使用的方法为string[] sr = File.ReadAllLines(filePath, Encoding.BigEndianUnicode);测试了UTF-8, BigEndianUnicode,ASCII,UTF7,Unicode,UTF32,Default(这种模式读出来,在本地机器为原样输出,即abcC,def,123)。这些编码方式读出来的字符串中的全角全部都为乱码,我很奇怪在服务器上的全角怎么给忽略了,有谁知道的请讲讲吧!倒底是哪种编码方式导致的(本机器测试不是已知的编码方式导致的),这是否可解释在webForm中,轻量级Excel导出里为何要将编码方式设定为Encoding.Default?
...全文
218 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuda_1985 2010-06-28
  • 打赏
  • 举报
回复
这是msdn上的解释:
若要获取与操作系统区域和语言设置中的默认 ANSI 代码页相关联的编码,应用程序应当使用 GetEncoding(0) 或 Default 属性。若要确定操作系统中使用的默认代码页,应用程序可以使用 Windows API 函数 GetSystemDefaultLangID。若要确定当前的 ANSI 代码页,应用程序可以使用 Windows API 函数 GetACP。

警告
不同的操作系统可能会将不同的编码用作默认编码。因此,从一个操作系统流向其他操作系统的数据可能转换不正确。若要确保编码后的字节能够正确解码,应用程序应当使用带前导码的 Unicode 编码(即 UTF8Encoding、UnicodeEncoding 或 UTF32Encoding)。另一选择是使用较高级别的协议以确保使用同一格式进行编码和解码。


由 Default 定义的系统 ANSI 代码页包含 ASCII 字符集,但是其编码不同于 ASCII 的编码。由于所有的 Default 编码会丢失数据,因此应用程序可以改用 UTF8 或 Encoding。在 U+00 到 U+7F 的范围内,UTF-8 通常是相同的,但是可以在不丢失数据的情况下对其他字符进行编码。
下载代码方式:https://pan.quark.cn/s/dd3561eca308 在软件开发领域,面向对象编程(OOP)是一种普遍采纳的结构化方法,它使得开发者能够借助模拟现实环境的实体和关系来构建软件系统。在本案例,我们观察到的是一个关于借助抽象类来执行不同几何图形面积求解的实践应用。现在,让我们详细分析这一议题。 标题 "应用抽象类计算面积" 清晰地表明我们将要讨论一个抽象类,此类设定了一个用于测量图形面积的标准函数,但并未提供实际的执行过程。抽象类在诸如C#或Java等编程语言通常借助`abstract`修饰符进行声明,它们无法直接创建对象实例,仅能作为其他类的基础模板。 描述部分提及的"图形界面应用"暗示这是一个基于视觉用户界面(GUI)的系统,可能运用了.NET Framework的Windows Forms或WPF技术,或者是Java平台的Swing或JavaFX框架。在这样环境下,用户能够通过视觉元素与这些几何体进行互动,例如输入相关尺寸并观看到计算得出的面积值。 抽象类“几何体”内嵌了“计算面积”这一抽象函数。在代码层面,这可以被表述为: ```csharp public abstract class GeometricShape { public abstract double CalculateArea(); } ``` 随后,有三个派生类:圆(Circle)、矩形(Rectangle)和三角形(Triangle),它们各自提供了这个抽象函数的具体实现。比如,圆的面积是通过π乘以半径的平方得到的,矩形的面积是长和宽的乘积,而三角形的面积可能是底乘以高再除以2的结果。这些类将提供具体实现来计算它们各自的面积: ```csharp p...
内容概要:本文系统研究了移相控制全桥LLC谐振变换器的工作特性,深入分析其在不同工作模式下的运行机理与性能表现,重点探讨了软开关实现、高效率能量转换及宽范围电压调节等关键技术优势。通过Simulink搭建精确的仿真模型,对谐振腔参数、开关频率、电压增益、系统效率等关键指标进行仿真分析,验证了理论设计的正确性。同时,详细研究了移相控制策略对系统动态响应、稳定性和轻载/重载工况适应性的影响,揭示了控制参数与电路参数之间的耦合关系,为高频高效电源设计提供了理论依据和实践指导。; 适合人群:具备电力电子技术、模拟电路及自动控制理论基础,从事开关电源、新能源变换器、电动汽车充电模块或高频电源系统研发的工程师及高校研究生。; 使用场景及目标:①掌握全桥LLC谐振变换器的拓扑结构、工作原理与关键参数设计方法;②理解移相控制在实现零电压开通(ZVS)和零电流关断(ZCS)的作用机制;③通过Simulink仿真掌握变换器建模、参数优化与性能评估流程,服务于实际产品开发与学术课题研究。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步操作,重点关注谐振网络(Lr, Lm, Cr)参数与移相角之间的匹配设计,深入理解软开关条件的形成过程,并通过调整负载和输入电压进行多工况仿真,以全面掌握系统动态特性。

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧