1

我有一个使用 Oracle 生成的 Base64 编码值

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);

在这种情况下,生成的 transcriptId 难以辨认。我已经尝试过 Encoding.UTF8 和 Encoding.Unicode,但两个结果都难以辨认。

有什么建议吗?

先感谢您。

4

1 回答 1

2

您必须知道“id”最初是如何存储的。id 列是什么类型?它最初是如何编码的?一旦你知道这一点,你就必须走相反的道路。假设 id 最初是 c# UTF8 编码的字符串。然后你得到字节并将其作为原始数据存储在数据库中。您需要做的是从数据库中读取原始字节并将其编码为 UTF8 和瞧。

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

于 2013-10-26T11:15:23.020 回答