C# 使用ODBC ADO.NET从Db2代码页1252读取数据-未正确检索欧元(€;)符号

C# 使用ODBC ADO.NET从Db2代码页1252读取数据-未正确检索欧元(€;)符号,c#,ado.net,visual-studio-2005,codepages,cp1252,C#,Ado.net,Visual Studio 2005,Codepages,Cp1252,在VS2005C#中,在将欧元(€)符号插入Db2表时,它正确地存储了值。DISABLEUNICODE=1参数有助于正确存储此信息 但当我们试图从表中读取时,它给出了如下的垃圾字符 “规格GS 1” 同样的代码在VB6.0ADO中工作 你能帮帮我吗 代码: OdbcConnection con = new OdbcConnection(); OdbcDataAdapter dataAdapter = new OdbcDataAdapter("SELECT * FROM XXXX.XXXX" ,

在VS2005C#中,在将欧元(€)符号插入Db2表时,它正确地存储了值。DISABLEUNICODE=1参数有助于正确存储此信息

但当我们试图从表中读取时,它给出了如下的垃圾字符

“规格GS 1”

同样的代码在VB6.0ADO中工作

你能帮帮我吗


代码:

OdbcConnection con = new OdbcConnection();
OdbcDataAdapter dataAdapter = new OdbcDataAdapter("SELECT * FROM XXXX.XXXX" , con);
OdbcCommand odbcCommand =
    new OdbcCommand(
        "INSERT INTO   XXXX.XXXX( BREACH_TYPE,JURISDICTION,ACTIVE ,VERIFIED , UPDATED_TS , UPDATED_BY ,VERIFIED_TS ,VERIFIED_BY)VALUES ('Spec GS € 1','IRE','Y','Y',CURRENT TIMESTAMP,'XECCRT3',CURRENT TIMESTAMP,'XECCRT8')");

con.ConnectionString = "DSN=DSNT;UID=xxxxxx;PWD=xxxxxx;MODE=SHARE;DBALIAS=DSNT;DISABLEUNICODE=1;PATCH1=1024;LONGDATACOMPAT=1;LOBMAXCOLUMNSIZE=1048575;PATCH2=6;";
con.Open();

odbcCommand.Connection = con; 
odbcCommand.ExecuteNonQuery();

dataAdapter.SelectCommand.CommandTimeout = 0;

DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
DataTable result = dataSet.Tables[0];

string Text = result.Rows[0][0].ToString();

MessageBox.Show(Text = result.Rows[0][0].ToString());

con.Close(); 

从数据集中读取文本后,使用以下编码函数显示正确的数据

 private static string ConvertToAsciiString(string str)
{            
    Encoding source = Encoding.Default ;
    Encoding dest = Encoding.Unicode ;

    // Convert the string into a byte[].
    byte[] sourceBytes = dest.GetBytes(str);

    // Perform the conversion from one encoding to the other.
    byte[] destBytes = Encoding.Convert(source, dest, sourceBytes);

    string asciiString = dest.GetString(destBytes);
    asciiString = asciiString.Replace("\0", string.Empty);


    return asciiString; 
}