我有一个名为Folderć
的文件夹,其中包含smth.jpg。由于文件夹名称中包含字母ć
,因此文件路径将作为Folder%C0%01%/smth.jpg
保存在数据库中。
字母ć
保存为十六进制代码。在网站上预览图像时,这不是问题。
当我尝试通过C#函数在Folderć
中创建子文件夹时出现问题。函数获取文件路径字符串,查找文件夹名称并在其中创建子文件夹。因为我的字符串包含十六进制代码而不是字母ć
函数无法找到该路径因此无法创建子文件夹。
该字符串采用UTF-8格式,因此更改编码不会改变任何内容。 任何人都知道问题在哪里以及如何解决?
答案 0 :(得分:0)
您可以使用Base64编码名称:
public string ToBase64String(string text)
{
byte[] data = Encoding.UTF8.GetBytes(text);
return Convert.ToBase64String(data);
}
并在将字符串保存到数据库之前使用string myEncFolderPath = ToBase64String(myFolderPath);
。
从DB收到字符串后,您可以使用以下命令将其解码回正常字符串:
public string FromBase64String(string base64)
{
byte[] data = Convert.FromBase64String(base64);
return Encoding.UTF8.GetString(data);
}
使用string myFolderPath = FromBase64String(myEncFolderPath);
。
这样,您就可以在数据库中自由保存字符串。