C# 对Oracle utl_编码进行解码。base64_编码()

C# 对Oracle utl_编码进行解码。base64_编码(),c#,oracle,encode,utf8-decode,C#,Oracle,Encode,Utf8 Decode,我有一个Base64编码值,它是在Oracle中使用 select ... utl_encode.base64_encode(utl_raw.cast_to_raw(id)) as encodedid from ... 原始Oracle字符集是UTF8或Unicode。现在我试着用C来解码,但结果是难以辨认的 encodedTranscript = "4D7A59344E7A49334D513D3D"; byte[] encodedTid = Convert.

我有一个Base64编码值,它是在Oracle中使用

select ... 
utl_encode.base64_encode(utl_raw.cast_to_raw(id)) as encodedid from ...
原始Oracle字符集是UTF8或Unicode。现在我试着用C来解码,但结果是难以辨认的

        encodedTranscript = "4D7A59344E7A49334D513D3D";
        byte[] encodedTid = Convert.FromBase64String(encodedTranscript);
        String transcriptId = Encoding.Unicode.GetString(encodedTid);
在这种情况下,生成的转录本ID难以辨认。我尝试了Encoding.UTF8和Encoding.Unicode,但两种结果都难以辨认

        encodedTranscript = "4D7A59344E7A49334D513D3D";
        byte[] encodedTid = Convert.FromBase64String(encodedTranscript);
        String transcriptId = Encoding.Unicode.GetString(encodedTid);
有什么建议吗


提前谢谢。

您必须知道该id最初是如何存储的。id列是什么类型的?它最初是如何编码的?一旦你知道了这一点,你就必须走相反的道路。Supose该id最初是c UTF8编码的字符串。然后获取字节并将其作为原始数据存储在数据库中。您需要做的是从数据库中读取原始字节,并用UTF8和voilá对其进行编码


另一方面,如果您将id作为utf8字符串,然后获取字节并将其编码为base64,则必须对base64进行解码,而不是将其编码为raw。然后将原始字节编码为utf8。

谢谢您的回复。我不完全确定发生了什么,但你的回答让我在谷歌上搜索了更多。如果我使用选择。。。UTL_RAW.CAST_TO_VARCHAR2utl_encode.base64_encodel_RAW.CAST_TO_rawid,就像encoded从。。。它起作用了。我以为我在两种方法之间使用了相同的基本编码a,但显然我没有。非常感谢。