C#(.Net) 解决Informix中文乱码问题

简介: public static string GetEncodingString(string srcString)         {             Encoding e8859Encode = Encoding.
  1. public static string GetEncodingString(string srcString)
  2.         {
  3.             Encoding e8859Encode = Encoding.GetEncoding("iso-8859-1");
  4.             Encoding srcEncode = Encoding.GetEncoding("gb2312");
  5.             Encoding dstEncode = Encoding.Unicode;
  6.             byte[] srcBytes = e8859Encode.GetBytes(srcString);//用iso-8859-1去转换源字符串

  7.             byte[] dstBytes = Encoding.Convert(srcEncode, dstEncode, srcBytes);//但是,是从gb2312转到unicode的

  8.             char[] dstChars = new char[dstEncode.GetCharCount(dstBytes, 0, dstBytes.Length)];
  9.             dstEncode.GetChars(dstBytes, 0, dstBytes.Length, dstChars, 0);
  10.             return new string(dstChars);
  11.             
  12.         }
具体原因我推测是因为数据过来是ISO-8859-1,但.Net地层格处理成了Gb2312了,所以需要通过两种编码转换成Unicode才能正常显示,听说在Java中只要new String(s.getBytes("ISO-8859-1"),"gb2312");就OK了。

转换成ISO
  1. public static string GetISOEncodedString(string srcString)
  2.         {
  3.             if(bDBInfor) {
  4.                 Encoding e8859Encode = Encoding.GetEncoding("iso-8859-1");
  5.                 Encoding srcEncode = Encoding.Unicode;
  6.                 Encoding dstEncode = Encoding.GetEncoding("gb2312");
  7.                 byte[] srcBytes = srcEncode.GetBytes(srcString);//用Unicode去转换源字符串

  8.                 byte[] dstBytes = Encoding.Convert(srcEncode, dstEncode, srcBytes);//但是,是从gb2312转到unicode的

  9.                 char[] dstChars = new char[e8859Encode.GetCharCount(dstBytes, 0, dstBytes.Length)];
  10.                 e8859Encode.GetChars(dstBytes, 0, dstBytes.Length, dstChars, 0);
  11.                 return new string(dstChars);
  12.             }
  13.             return srcString;
  14.         }
目录
相关文章
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
751 0
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
594 0
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
577 18
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
730 12
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
290 6
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
304 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
345 6
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
1061 13
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
1126 5
|
Java 物联网 编译器
C#一分钟浅谈:.NET Core 与 .NET 5 区别
本文对比了 .NET Core 和 .NET 5,从历史背景、主要区别、常见问题及易错点等方面进行了详细分析。.NET Core 侧重跨平台支持和高性能,而 .NET 5 在此基础上统一了 .NET 生态系统,增加了更多新特性和优化。开发者可根据具体需求选择合适的版本。
712 7