gpt4 book ai didi

c# - PHP base64_decode C# 等价物

转载 作者:行者123 更新时间:2023-11-30 19:35:00 25 4
gpt4 key购买 nike

我正在尝试模仿执行以下操作的 php 脚本:

  1. 用 + 号替换 GET 变量的每个空格 ($var = preg_replace("/\s/","+",$_GET['var']); )
  2. 解码为 base64:base64_decode($var);

首先我添加了一个执行 base64 解码的方法:

        public string base64Decode(string data)
{
try
{
System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();

System.Text.Decoder utf8Decode = encoder.GetDecoder();

byte[] todecode_byte = Convert.FromBase64String(data);
int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
char[] decoded_char = new char[charCount];
utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
string result = new String(decoded_char);
return result;
}
catch (Exception e)
{
throw new Exception("Error in base64Decode" + e.Message);
}
}

但似乎 UTF-8 没有完成这项工作,所以我尝试了相同的方法,但使用的是 UTF-7

        public string base64Decode(string data)
{
try
{
System.Text.UTF7Encoding encoder = new System.Text.UTF7Encoding();

System.Text.Decoder utf7Decode = encoder.GetDecoder();

byte[] todecode_byte = Convert.FromBase64String(data);
int charCount = utf7Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
char[] decoded_char = new char[charCount];
utf7Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
string result = new String(decoded_char);
return result;
}
catch (Exception e)
{
throw new Exception("Error in base64Decode" + e.Message);
}
}

最后要说的是,成功的php解码包含特殊标志,如注册标志和商标标志,但C#版本没有!

另外,php base64_decode 是否受服务器语言影响?

最佳答案

UTF-7 不太可能是您想要的。您真的需要知道 PHP 使用的是什么编码。它可能正在使用您系统的默认编码。幸运的是,解码比制作要容易得多:

public static string base64Decode(string data)
{
byte[] binary = Convert.FromBase64String(data);
return Encoding.Default.GetString(binary);
}

没有必要显式地乱用 Encoder :)

另一种可能性是 PHP 使用的是 ISO Latin 1,即代码页 28591:

public static string base64Decode(string data)
{
byte[] binary = Convert.FromBase64String(data);
return Encoding.GetEncoding(28591).GetString(binary);
}

PHP 手册无助地只是说:“在 PHP 6 之前,一个字符与一个字节相同。也就是说,可能有 256 个不同的字符。”遗憾的是它没有说明每个字节的实际含义...

关于c# - PHP base64_decode C# 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/656373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com