C# 和 PL/SQL 中的 Base64?
Posted
技术标签:
【中文标题】C# 和 PL/SQL 中的 Base64?【英文标题】:Base64 in C# and PL/SQL? 【发布时间】:2011-01-25 15:54:03 【问题描述】:在 PL/SQL 中,如何将字符串(带有换行符和标签的长 html 字符串等)转换为易于在 C# 中解密的 Base64?
在 C# 中有:
Convert.ToBase64String()
Convert.ToBase64CharArray()
BitConverter.ToString()
哪一个兼容PL/SQL
utl_encode.base64_encode();
?
我欢迎任何其他建议:-)
【问题讨论】:
看起来您回答了自己的问题。为什么不让它成为下面的“答案”? 我不确定你的意思是什么? @AdamHawkes 的意思是utl_encode.base64_encode();
在 PL/SQL 中进行 Base64 编码。 @数据库
等等,好的,我明白了!现在我明白了,这不是关于存储过程,而是关于 C# 方法。
【参考方案1】:
您可能想要使用此方法:
Convert.ToBase64String()
它返回一个基于无符号 8 位整数(字节)数组的 Base64 编码字符串。
作为替代,您可以使用Convert.ToBase64CharArray()
,但输出是一个字符数组,这有点奇怪,但在某些情况下可能有用。
BitConverter.ToString()
方法返回一个字符串,但字节以十六进制表示,而不是 Base64 编码。
【讨论】:
谢谢,但哪一个给我的结果与 utl_encode.base64_encode();在 PL/SQL 中?我问是因为现在我无法访问我的 Oracle 数据库,干杯 很难说哪个最接近。UTL_ENCODE.BASE64_ENCODE
有一个 RAW 参数并返回一个 RAW。然后必须将该 RAW 转换为字符串 (VARCHAR2) 以匹配 Convert.ToBase64String
的输出。【参考方案2】:
我做到了:-)
PL/SQL
s1 varchar2(32767);
s2 varchar2(32767);
s2:= utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(s1)));
s2:= utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw(s1)));
与 C# 兼容
public static string ToBase64(string str)
return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
//++++++++++++++++++++++++++++++++++++++++++++++
public static string FromBase64(string str)
return Encoding.UTF8.GetString(Convert.FromBase64String(str));
希望你觉得它有用:-)
【讨论】:
以上是关于C# 和 PL/SQL 中的 Base64?的主要内容,如果未能解决你的问题,请参考以下文章