C# 防止 ConnectionStringBuilder 使用等号转义密码

C# Preventing ConnectionStringBuilder from escaping password with equal sign

我有一个我无法更改的密码,其中有一个等号。使用 OdbcConnectionStringBuilder 时,它适用于没有等号的密码,但当我这样做时,它会转义变量。这行得通,

        builder.DataSourceName = "SERVER";
        builder.DatabaseFile = "THISSERV";
        builder.UserID = "DBA";
        builder.Password = "XU5%^YhZ";

并生成以下连接字符串

"UserID=DBA;Password=XU5%^YhZ;DatabaseFile=THISSERV;DataSourceName=SERVER"

但是,如果你输入等号

        builder.DataSourceName = "SERVER";
        builder.DatabaseFile = "THISSERV";
        builder.UserID = "DBA";
        builder.Password = "XU5%^Yh=Z";

它生成以下连接字符串并转义密码。

"UserID=DBA;Password=\"XU5%^Yh=Z\";DatabaseFile=THISSERV;DataSourceName=SERVER"

我怎样才能避免这种情况?前面的示例是正确的,但在我的应用程序中,我实际上也在解密密码,如果不相等,这不会影响任何事情,我尝试将 @ 放在 StringCipher 前面,但它没有用。它看起来像这样,第一个参数实际上是一个变量。

builder.Password = StringCipher.Decrypt("0jURE7f9aTOItD5tgl9E6YoBKhMRaxDVj1KfS0SJ/ZBxIKVVbVYZXHMKgndI", "JlkIUJdfolsdff352345rf")

您需要根据 Odbc ConnectionString escape guidelines:

将密码括在大括号 { }

A DSN or connection string value enclosed with braces ({}) that contains any of the characters []{}(),;?*=!@ is passed intact to the driver.

所以这样称呼应该可行:

builder.Password = "{XU5%^Yh=Z}";