gpt4 book ai didi

c - 带有 unicode 路径的 gtk_file_chooser_get_filename

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:31 25 4
gpt4 key购买 nike

gtk_file_chooser_get_filename 适用于没有 unicode 字符的文件。但是,如果我在文件夹中选择一个带有 unicode 字符(在我的例子中是日语)的文件,我就得不到正确的文件名。

是否有 gtk_file_chooser_get_filenamewchar_t 版本,或者我应该对文件名进行额外处理以获得 wchar_t 字符串?

char* filename = gtk_file_chooser_get_filename(fileChooser);

std::cout << filename << std::endl;
std::wcout << filename << std::endl;

最佳答案

gtk_file_chooser_get_filename()返回 strings encoded with the current locale可能是也可能不是 UTF-8。 g_filename_to_utf8()将文件名从语言环境编码转换为 UTF-8。

std::wcout而是期望宽字符,而不是 UTF-8。在我的系统上 sizeof(wchar_t)是四个字节,所以 std::wcout需要以 UTF-32 编码的字符串。

std::cout << filename << std::endl;应该可以正常工作,因为没有完成任何转换。

对于 std::wcout << filename << std::endl;您需要将语言环境(希望是 UTF-8)转换为 UTF-32(或您的编译器用于宽字符的任何内容),例如使用 std::wstring_convert::from_bytes() .

关于c - 带有 unicode 路径的 gtk_file_chooser_get_filename,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43733013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com