Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串中删除字符十六进制代码_C#_Sql_Asp.net_Character Encoding - Fatal编程技术网

C# 从字符串中删除字符十六进制代码

C# 从字符串中删除字符十六进制代码,c#,sql,asp.net,character-encoding,C#,Sql,Asp.net,Character Encoding,我有一个名为folderć的文件夹,其中包含smth.jpg。由于文件夹名称中包含字母ć,因此文件路径将作为文件夹%C0%01%/smth.jpg保存在数据库中。 字母ć保存为十六进制代码。在网站上预览图像时,这不是问题 当我试图通过C函数在Folderć中创建子文件夹时,会出现问题。函数获取文件路径字符串,查找文件夹名称并在其中创建子文件夹。因为我的字符串包含十六进制代码而不是字母ć,所以函数无法找到该路径,因此无法创建子文件夹 该字符串为UTF-8格式,因此更改编码不会改变任何内容。 有人知

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

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

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

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

public string ToBase64String(string text)
{
    byte[] data = Encoding.UTF8.GetBytes(text);
    return Convert.ToBase64String(data);
}
并使用它string myEncFolderPath=ToBase64StringmyFolderPath;在数据库中保存字符串之前

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

public string FromBase64String(string base64)
{
    byte[] data = Convert.FromBase64String(base64);
    return Encoding.UTF8.GetString(data);
}
通过使用字符串myFolderPath=FromBase64StringmyEncFolderPath


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

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

public string ToBase64String(string text)
{
    byte[] data = Encoding.UTF8.GetBytes(text);
    return Convert.ToBase64String(data);
}
并使用它string myEncFolderPath=ToBase64StringmyFolderPath;在数据库中保存字符串之前

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

public string FromBase64String(string base64)
{
    byte[] data = Convert.FromBase64String(base64);
    return Encoding.UTF8.GetString(data);
}
通过使用字符串myFolderPath=FromBase64StringmyEncFolderPath


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

文件路径作为文件夹%C0%01%/smth.jpg保存在数据库中。这就是您在SQL Server management studio中运行select时看到的内容吗?您在数据库中使用的列类型是什么?您应该能够使用nvarchar来允许使用Unicode字符,然后不需要进行这种类型的编码。它在sql查询后带有十六进制符号。这看起来像一个URL编码。您如何从数据库中读取该值?在您尝试创建该文件夹之前,该值采用什么路径?这是正确的。使用HttpUtility.UrlEncode方法节省了一天。谢谢FilePath作为文件夹%C0%01%/smth.jpg保存在数据库中这是在SQL Server management studio中运行select时看到的吗?数据库中的列使用什么类型?您应该能够使用nvarchar来允许使用Unicode字符,然后不需要进行这种类型的编码。它在sql查询后带有十六进制符号。这看起来像一个URL编码。您如何从数据库中读取该值?在您尝试创建该文件夹之前,该值采用什么路径?这是正确的。使用HttpUtility.UrlEncode方法节省了一天。谢谢当专栏为nvarchar时,您不需要这样做。显然它保存正确。当列为nvarchar时,您不需要这样做。显然,它确实正确地保存了数据。