首页 > 解决方案 > C: 如何将 %20 转换为空格?

问题描述

我在为 GNU Coreutils 程序编写图形前端时遇到了这个shred程序。当用户拖入包含空格的文件时,例如my private data.docxGTK+ DND 服务将这些空格表示为%20. 使用那个例子我会得到(对于文件名)my%20private&20data.docx。我需要将它们转换为空格字符,因为我fopen使用stdio.h. fopen拒绝打开这样的文件名,因为它不能识别%20为空间的表示。

标签: cdrag-and-dropgtk

解决方案


不,您不能%20用空格替换。您将 URL 解码为文件名,使用 g_filename_from_uri

gchar *
g_filename_from_uri (const gchar *uri,
                     gchar **hostname,
                     GError **error);

因此使用

gchar *filename = g_filename_from_uri(uri, NULL, NULL);

最简单的。


推荐阅读