CFileDialog getpathName不读日语

时间:2011-11-09 12:13:23

标签: visual-c++ unicode mfc cjk filedialog

我有一个日语文件夹名称。选择文件夹时,CFileDialog getpathNameis会返回一些问号。有办法解决吗?

1 个答案:

答案 0 :(得分:2)

如果您的应用程序是使用MBCS支持而不是Unicode支持构建的,则仅当您的“非Unicode程序的语言”(也称为系统区域设置)设置为日语时,才能正确处理日语路径,对于您的日本用户来说就是这种情况,但如果您不是日本人则可能不是这种情况。

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

以下是一些可能的选择:

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

  2. 在日语代码页下测试您的应用。要执行此操作,请临时更改非Unicode程序的语言(需要重新启动)或(更容易)在AppLocale下测试您的应用。 (注意:是的,它在Windows 7下运行正常。This article may help如果您遇到问题)。

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

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

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