解决C#连接informix数据库中文乱码

news/2025/3/4 14:59:02/文章来源:https://www.cnblogs.com/equation/p/18750503

1. C#连接Informix

需要在windows主机安装informix csdk. 安装完成后在安装目录下面有.net连接informix的驱动, 大概位置如: C:\Program Files\IBM Informix Client-SDK\bin\netf40

 不同的版本的csdk可能会有不同的位置, 但大体和上面差不多,总之不好超出csdk的安装目录. 可以查找可用的dll文件: IBM.Data.Informix.dll , 这个文件就可以引入到C#项目的dll

 

2. 建立安装C#项目

C#项目的具体建立这里不再赘述, 引入IBM.Data.Informix.dll 后,就可以进行测试连接,代码如下:

IfxConnection conn = new IfxConnection();
string cs = "Host=192.168.0.1;Service=9908;DataBase=mydb;Server=on_public;User ID=informix;Password=123456;Client_Locale=en_us.CP1252;DB_LOCALE=en_US.819";
conn.ConnectionString = cs;
conn.Open();

  

3.读取表数据

这里假设informix安装的时候使用默认的字符编码环境, 即en_US.819, iso-8859-1.

其实跟IfxConnection连接到informix使用的默认Client_Locale, DB_LOCALE是一样的.

读取数据的代码如下:

 1 IfxConnection connection = GetConnection();
 2 connection.Open();
 3 List<Hashtable> list = new List<Hashtable>();
 4 IfxCommand cmd = new IfxCommand(sql, connection);
 5 IfxDataReader reader = cmd.ExecuteReader();
 6 
 7 int count = reader.FieldCount;
 8 while (reader.Read())
 9 {
10     Hashtable row = new Hashtable();
11     for(int i = 0; i < count; i++)
12     {
13         string colname = reader.GetName(i);
14         object value;
15         if (reader.IsDBNull(i))
16         {
17             value = null;
18         }
19         else
20         {
21             value = reader.GetValue(i);
22             string type = value.GetType().Name.ToLower();
23             if (type.Contains("string"))
24             {
25                 //Encoding.Default.GetBytes(value.ToString());
26                 byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(value.ToString());
27                 value = Encoding.Default.GetString(bytes);
28             }
29         }
30 
31         row[colname] = value;
32     }
33     list.Add(row);
34 }
35 
36 connection.Close();

因为C#连接informix读取的数据默认是读取ISO-8859-1数据编码, 中文在前台显示是乱码的,需要转换为C#默认的字符后才能正常显示.

相关代码如上面的代码的26行,27行.

 

4. 补充说明C#连接informix的参数, 除了以上代码列出来的参数之外, 再补充说明以下几个

参数说明
参数名 说明 默认值
Pooling When set to true, the IfxConnection object is drawn from the appropriate pool, or if necessary, it is created and added to the appropriate pool. true
Protocol, PRO The communication protocol used between the CreateConnection() and the database server.一般是留空,或者填onsoctcp, 主要是informix服务器配置对外连接的配置方式 ""
Max Pool Size The maximum number of connections allowed in the pool. 100
Min Pool Size The minimum number of connections allowed in the pool. 0
     

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/893437.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FormCreate设计器v5.6发布—AI加持的低代码表单设计器正式上线!

近期DeepSeek可谓是刷遍全网,当然,在DeepSeek等AI技术的推动下,人工智能正以惊人的速度改变着各行各业。AI不仅是一种技术趋势,更是未来生产力的核心驱动力。 如今,FormCreate设计器也正式迈入AI时代🎉🎉,推出v5.6版本,搭载AI智能表单助理,让表单设计从繁琐的手动操…

清华大学第7弹 | 亿万家长福音 -《DeepSeek赋能家庭教育》 | 免费下载

《DeepSeek赋能家庭教育》是由清华大学张诗瑶博士出品的教程,帮助中国家长解放自己的同时,提高孩子的自主学习能力和核心竞争力。下载地址:https://pdfs.top/book/清华大学-DeepSeek赋能家庭教育.html直到听了清华博士后张诗瑶的直播,我才发现: “不是孩子笨,而是我们用错…

揭秘Chrome DevTools:从原理到自定义调试工具

作者:京东科技 杜强强 引言Chrome DevTools 是前端开发者的必备工具,不仅可以用于调试 Chrome 网页,还支持 Android WebView、Roma (跨平台开发框架) 安卓&鸿蒙端等平台的调试。 作为最常用的调试工具之一,DevTools 不仅能快速定位问题,还能让我们深入了解调试的内部机…

升级到Windows 11 24h2版本后惠普打印机报错spl error 11-1114 line 601

问题描述 近日升级到Windows 11 24h2版本后发现使用HP Laser MFP 1136w Printer打印文档皆会打出一页报错页面,内容如下图所示,但是使用HP Smart Assistant打印PDF一切正常,尝试了使用HP SMART进行修复,修改网络连接方式,重新添加打印机等等方式皆无果。解决方案 排查后发…

Outlook邮箱登录失败,0x80190001错误的多种解决方法

一、Outlook邮箱客户端“0x80190001”解决方法起初出现这个问题我以为是电脑有病毒了,无奈之下全盘杀毒仍然无法解决,随后开始搜索“0x80190001”相关问题查阅,试过好多办法依然无效,直到我找到以下方法:“win+s”打开搜索界面,找到“Internet选项”点击进入该项设置。在…

AUTOSAR网络管理自动化测试如何创建测试框架

在AUTOSAR网络管理自动化测试中,需求分析、模块化设计、自动化执行是创建测试框架的核心要点,其中模块化设计尤为关键,通过将复杂的网络管理功能拆分为独立模块,实现灵活扩展与维护;这不仅能提高测试效率,还能在多变的系统环境中保持稳定性。采用标准化的设计模式,并辅以…

jmeter中的while循环控制器中变量提取

${__javaScript(${status}==0)} ${__groovy(vars.get("status") == 0)}

docker compose部署nacos高可用集群,并开启账号密码

架构图 部署 一、准备yml文件、nacos sql初始化文件、nginx.conf文件 nacos sql初始化文件/** Copyright 1999-2018 Alibaba Group Holding Ltd.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in complian…

Flutter QQ聊天项目(1):登录界面实现

下面介绍 Flutter 最基本的通用项目框架搭建,顺便实现一个 QQ 聊天界面,这里只先实现了 QQ 登录界面。先看下效果图:一、运用技术编辑器:VS Code 框架技术:Flutter3.104 + Dart3.105 路由/状态管理:get^4.6.6更具体的:使用ScreenUtilInit自适应界面大小; 使用Stack支持…

PrivHunterAI:越权漏洞检测的工具

免责声明: 工具仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!​ 项目介绍 功能 一款通过被动代理方式调用Kimi、DeepSeek和通义千问AI,实现越权漏洞…

开启科创服务新篇章!八月瓜科技CRM数字化管理系统成功上线

近日,北京八月瓜科技有限公司(以下简称 “八月瓜科技”)与纷享销客达成深度战略合作,成功部署并上线CRM数字化管理系统。此次合作是八月瓜科技在数字化转型进程中的重要里程碑,标志着其在科技创新服务领域的数字化变革进程中迈出了坚实且具有战略意义的一步。 八月瓜科技是…

Feedalyze - 让你听得见、听得清用户的反馈

Feedalyze - 专注于用户反馈的管理分析工具,让你听得见、听得清用户的反馈!满足用户需求,解决用户问题,获得适当报酬是商业成功最为重要的因素。然而扪心自问,当您推出新产品后,您真的在听、听得见、听得清用户的反馈么? 当今信息传播迅猛,渠道繁多,优秀产品随口碑效应…