如何解决Informix ODBC连接字符串中特殊字符密码失效问题
解决Informix ODBC连接字符串中特殊字符密码的问题
你使用Informix ODBC Driver 3.34 32BIT,在PowerShell脚本中配置ODBC连接字符串时,不含特殊字符的密码可正常连接,但用大括号{...}包裹带特殊字符的密码无效,需适配含特殊字符的Windows密码。以下是可行的解决方案:
可行方法
1. 直接转义特殊字符
针对分号;、等号=、反斜杠\这类会干扰连接字符串解析的特殊字符,在字符前添加反斜杠\进行转义:
# 示例:密码为 read;only\= $conn.connectionstring = "DSN=PD7333;Uid=generic;Pwd=read\;only\=\;"
2. 用双引号包裹密码
Informix ODBC驱动支持用双引号包裹密码,在PowerShell中需注意引号的转义:
- 若使用双引号字符串,需用两个双引号表示一个双引号:
# 示例:密码为 read;only=! $conn.connectionstring = "DSN=PD7333;Uid=generic;Pwd=""read;only=!"""
- 若使用单引号字符串,内部双引号无需转义:
$conn.connectionstring = 'DSN=PD7333;Uid=generic;Pwd="read;only=!"'
3. 通过属性集合单独设置密码
避开直接拼接连接字符串,使用SetAttribute方法单独传入带特殊字符的密码,避免解析冲突:
$conn = New-Object System.Data.OleDb.OleDbConnection $conn.ConnectionString = "DSN=PD7333;Uid=generic" $conn.SetAttribute("Pwd", "read;only=!") # 直接传入原始密码 $conn.Open()
4. 升级ODBC驱动版本
Informix ODBC Driver 3.34属于旧版本,对特殊字符的处理逻辑可能存在局限。如果上述方法无效,建议升级到最新的32位Informix ODBC驱动(需匹配系统架构),新版本对特殊字符的兼容性更好。
内容的提问来源于stack exchange,提问作者Vasco V.
相关产品推荐
相关产品推荐

