tinyfiledialogs如何将文件保存在俄语命名文件夹中

Posted

技术标签:

【中文标题】tinyfiledialogs如何将文件保存在俄语命名文件夹中【英文标题】:tinyfiledialogs how to save file in russian naming folder 【发布时间】:2020-04-13 12:31:09 【问题描述】:

我使用的是 tinyfiledialogs lib,我可以将文件保存在名称为英文的文件夹中,但是当我尝试将完全相同的文件保存在名称类似于例如“Кот”的文件夹中时,换句话说就是俄语字母 i不能。

这是代码

IntPtr p = tinyfd_saveFileDialog(sDialogTitle, sInitialPathAndFile, 
            filterPatterns.Length, filterPatterns, sPatternDesc);

这是在我正在使用的 somelib 中定义的

        [DllImport("tinyfiledialogs", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern IntPtr tinyfd_saveFileDialog(string aTitle, string aDefaultPathAndFile, int aNumOfFilterPatterns, string[] aFilterPatterns, string aSingleFilterDescription);

任何帮助?我是这个库的新手,找不到任何关于此的重要信息。

【问题讨论】:

【参考方案1】:

该库似乎导出了其函数的 ANSI 和 Unicode 版本(即 A 和 W 后缀)。所以你应该能够改变

CharSet = CharSet.Ansi

CharSet = CharSet.Unicode

pinvoke marshaler 将完成剩下的工作。

【讨论】:

谢谢,但是当我将 ansi 更改为 unicode 时,弹出窗口没有显示。 可能是其他问题。但是您将需要使用 Unicode,不是吗? 是的,或者我现在可能使用自动选项 duno,但在 unicode 弹出窗口中根本没有显示。试图找出问题所在, 你不想使用Auto。我的意思是,您的目标不是 Windows 98。 哦,对了)我只是不知道为什么使用 Unicode 这个东西不起作用【参考方案2】:

更新:我刚刚更正了 DLL 的 C# 导入中的许多问题。可以试试 3.6.0 版的新 DLL 吗?

我是 tinyfiledialogs 的作者。首先确保您是从 sourceforge 站点 https://sourceforge.net/projects/tinyfiledialogs 获取它,而不是从任何 github 副本(通常已过时)。

据报道,您应该使用 UTF-16 (wchar_t - CharSet = CharSet.Unicode) 调用。但是 UTF-8 (char = CharSet.Ansi) 现在也可以使用。

【讨论】:

我如何知道我使用的是哪个来源?我怎样才能从 sourcecfroge 网站获取源代码?任何链接? 是的,你是对的,我已经下载了你的库的最新版本,看起来它工作正常。到目前为止,我一直在使用旧版本。非英文命名文件夹有一些问题。无论如何谢谢。 您好,请告诉我您的库是否有适用于 macOS 的特定版本,或者这个 dll 在 Windows 和 macOS 上都可以正常工作吗? 我刚刚将 .dylib 文件添加到 sourceforge 上的 zip 文件中。但是你可以自己生成它,像这样:“clang -c tinyfiledialogs.c”,然后是“clang -dynamiclib tinyfiledialogs.o -o tinyfiledialogs.dylib”。

以上是关于tinyfiledialogs如何将文件保存在俄语命名文件夹中的主要内容,如果未能解决你的问题,请参考以下文章

使用python将俄语字符写入txt文件[重复]

将带有俄语字符的 numpy.ndarray 写入文件

如何在 Visual Studio C++ 中将西里尔文(俄语)字符输出到控制台?

re (Python) 中的俄语符号

如何使用 Cyrillic 字体列出文件夹的内容?

通过 JDBC 的俄语符号(SAP Netweaver 7.3.1、Oracle 12c)