C# UTF-8 base64 编码在 PHP 中无法正确解码
C# UTF-8 base64 encoding doesn't decode correctly in PHP
所以我遇到了以下问题:我在 C# 中使用 UTF-8 将文件内容编码为 base64,然后 URL-对其进行编码并向我的 php 发送 GET 请求,然后我 url 在那里解码它,然后 base64 解码它。结果不是 1:1 我用 C# 编码的文件,无论如何。我已经尝试了 C# 中的所有编码,但它们都不起作用。我应该在这里做点别的吗?我还想提一下,我正在将文件回显到八位字节流中,也许回显不能 "echo" UTF-8 字符?
这是我在 C# 中的 Base64 编码:
public static string Base64Encode(string plainText)
{
var plainTextBytes = Encoding.UTF8.GetBytes(plainText);
string base64 = System.Convert.ToBase64String(plainTextBytes);
return WebUtility.UrlEncode(base64);
}
下面是我在 PHP 中的解码方式:
base64_decode(urldecode($_GET["parameter"]));
我是这样下载的:
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="<filename>"');
echo(base64_decode(urldecode($_GET["parameter"])));
谢谢。
与其将文件作为字符串读取,然后将其转换回二进制以将其转换为 base64 字符串,不如将文件作为字节读取:
var fileBytes = File.ReadAllBytes(fileName);
然后将其转换为 base64:
var fileBytes = File.ReadAllBytes(fileName);
var base64 = Convert.ToBase64String(fileBytes);
所以我遇到了以下问题:我在 C# 中使用 UTF-8 将文件内容编码为 base64,然后 URL-对其进行编码并向我的 php 发送 GET 请求,然后我 url 在那里解码它,然后 base64 解码它。结果不是 1:1 我用 C# 编码的文件,无论如何。我已经尝试了 C# 中的所有编码,但它们都不起作用。我应该在这里做点别的吗?我还想提一下,我正在将文件回显到八位字节流中,也许回显不能 "echo" UTF-8 字符?
这是我在 C# 中的 Base64 编码:
public static string Base64Encode(string plainText)
{
var plainTextBytes = Encoding.UTF8.GetBytes(plainText);
string base64 = System.Convert.ToBase64String(plainTextBytes);
return WebUtility.UrlEncode(base64);
}
下面是我在 PHP 中的解码方式:
base64_decode(urldecode($_GET["parameter"]));
我是这样下载的:
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="<filename>"');
echo(base64_decode(urldecode($_GET["parameter"])));
谢谢。
与其将文件作为字符串读取,然后将其转换回二进制以将其转换为 base64 字符串,不如将文件作为字节读取:
var fileBytes = File.ReadAllBytes(fileName);
然后将其转换为 base64:
var fileBytes = File.ReadAllBytes(fileName);
var base64 = Convert.ToBase64String(fileBytes);