【问题标题】:Azure Blob Metadata encodingAzure Blob 元数据编码
【发布时间】:2018-06-09 03:48:52
【问题描述】:
将字符串编码到 Azure Blob 元数据的正确方法是什么?
在使用 Azure 存储资源管理器时,它似乎使用了接近 C# UWPs WebUtiliy.UrlEncode 的函数。但不幸的是,WebUtilty.UrlEncode 将空格替换为“+”号(存储资源管理器保持空格不变)
是否有任何其他内置编码方法可以使我的应用程序和存储资源管理器之间的元数据保持兼容性?
谢谢
【问题讨论】:
标签:
c#
azure
uwp
azure-storage
azure-blob-storage
【解决方案1】:
一般来说,我们不需要对值进行编码,除非任何名称/值对包含非 ASCII 字符。因此,建议您对包含非 ASCII 字符的名称和值使用 URL 编码或 Base64 编码。
您可以使用任何您想要的方式,因为您可以正确解码字符串。该工具不会影响您的编码和解码方式。无论存储资源管理器 UI 中的值如何显示,您从应用程序获得的值都是您编码的字符串。
如果您确实想在存储资源管理器中使用相同的编码/解码方式,通过我这边的测试,您可以尝试使用Uri.EscapeUriString 方法。这会将空间编码为%20,存储资源管理器可以正确解码。
string escapetest= Uri.EscapeDataString(specialvalue);
blockBlob.Metadata["category"] = escapetest;