2

我有一个日文的文件夹名称。CFileDialog getpathNameis选择文件夹时返回一些问号。有什么办法可以解决吗?

4

1 回答 1

2

如果您的应用程序是使用 MBCS 支持而不是 Unicode 支持构建的,那么只有当您的“非 Unicode 程序的语言”(又名系统区域设置)设置为日语时,日语路径才会被正确处理,您的日语用户就是这种情况,但是如果你不是日本人,你可能不会这样。

如果您的系统语言环境不是日语,则在返回之前,该路径将转换为您的代码页GetPathName()。它将包含替换 (?) 字符或垃圾。很可能两者兼而有之。

以下是一些可用的可能性:

  1. 不要做任何事。您的应用程序应该适用于大多数日本用户。或不...

  2. 在日语代码页下测试您的应用程序。为此,请暂时更改非 Unicode 程序的语言(需要重新启动)或(更容易)在AppLocale下测试您的应用程序。(注意:是的,它在 Windows 7 下运行良好。如果您遇到问题,这篇文章可能会有所帮助)。

  3. 将其切换为 Unicode。根据您的代码库的大小,这可能是一项非常繁琐的任务,主要取决于输入和输出以及您是否_T("blah")在代码中使用字符串文字。当然,它还有更多方面,但这些是最重要的。顺便说一句,所有新项目都应该考虑到 Unicode 支持。

  4. 专门处理这个路径问题。因为我们说的是文件对话框,所以整个对话框应该以 Unicode 格式打开。这意味着您可能必须显式调用底层 Win32 API 的 Unicode 版本,而不是简单地调用CFileDialog. 它并没有那么复杂,但风险在于您只解决了连续的第一个问题。正确设置日语路径后,您将不得不处理用户输入的日语文本,......所以我认为这个解决方案不是一个好的解决方案。

解决方案 #2 无疑是识别小问题的最快方法。从长远来看,解决方案#3 肯定是最好的。但请确保您确实需要它,因为它可能对现有应用程序来说很乏味。

于 2011-11-10T07:54:15.507 回答