正在从字符串中删除字符十六进制代码



我有一个名为Folderć的文件夹,其中包含smth.jpg。由于文件夹名称中有字母ć,文件路径在数据库中保存为Folder%C0%01%/smth.jpg。字母ć保存为十六进制代码。在网站上预览图像时,这不是问题。

当我试图通过C#函数在Folderć中创建子文件夹时,会出现问题。函数获取文件路径字符串,找到文件夹名称并在其中创建子文件夹。由于我的字符串中包含十六进制代码而不是字母ć,函数无法找到该路径,因此无法创建子文件夹。

该字符串是UTF-8格式的,因此更改编码不会改变任何内容。有人知道问题在哪里以及如何解决它吗?

您可以使用Base64:对名称进行编码

public string ToBase64String(string text)
{
    byte[] data = Encoding.UTF8.GetBytes(text);
    return Convert.ToBase64String(data);
}

并在将字符串保存到DB之前使用它CCD_ 7。

从数据库接收字符串后,可以使用将其解码回正常字符串

public string FromBase64String(string base64)
{
    byte[] data = Convert.FromBase64String(base64);
    return Encoding.UTF8.GetString(data);
}

使用CCD_ 8。

这样,您就可以在数据库中自由地保存字符串。

最新更新