1

我有大量现有的 C++ 代码,它们在各个地方使用普通的 fopen() 来打开文件。通常,使用的路径是绝对路径,以“C:\Program Files (x86)\MyProgram...”或“C:\Users\Public\MyProgramData...”开头。

程序和数据由标准安装程序 (InnoSetup) 安装到这些位置。

(“C:\Program Files (x86)”和“C:\Users\Public”在代码中没有硬编码。但这些是建议的程序和数据安装位置,所以通常这些是文件所在的路径被打开,由安装程序创建,可能是这些文件夹在用户机器上应该具有的任何本地名称。)

我担心在非英语版本的 Windows 上,这些路径前缀可能包含非 ascii 字符,这会使 fopen() 不高兴。

对于“程序文件”,以下参考文献使我在最常见的语言中唯一可能担心的是匈牙利语(“Programfájlok”):

对于“Users\Public”,我无法找到提供此类通用语言翻译的参考,但在西班牙语中,例如,我想它一定是 Pública?

你知道在这两条路径上使用像这样的普通 fopen() 可能会在世界各地遇到什么陷阱吗?

4

1 回答 1

3

使用_wfopenunicode 路径。

https://msdn.microsoft.com/en-us/library/yeby3zcb.aspx

于 2015-01-22T03:54:10.627 回答