【发布时间】:2018-07-18 04:57:28
【问题描述】:
我遇到了一个问题,那就是:在使用 SDL2 和 SDL2_Image 的 Windows 应用程序中,它会打开图像文件,以便稍后通过修改图像数据来保存它们。 当它打开图像没有特殊字符(如áéíóúñ,例如“buenos aires.jpg”)按预期工作。 但是,如果有提到的任何特殊字符(例如,“córdoba.jpg”),SDL_Image 会生成错误消息“无法打开文件”。无论如何,如果我使用 std::ifstream 通量和我从 CSV 文件中获得的确切文件名(冗余,如 "córdoba.jpg" 或 "misió nes.jpg"),ifstream 运行良好...使用特殊字符是否出错? UNICODE,UTF,有什么关系?
关于环境的一点信息:Windows 10(西班牙语、拉丁美洲)、SDL2 和 SDL2_Image(最新版本)、使用 Mingw64 7.1.0 的 GCC 编译器
关于我正在尝试制作的软件:它使用 CSV 格式,带有阿根廷各个州的名称,已经尝试更改 .CSV 上的编码。它会根据 CSV 上的名称加载图像、更改它们并保存。
我知道我可能缺少一些基本的东西,但已经耗尽了我的资源。
【问题讨论】:
-
您需要确保传递 UTF-8 编码的字符串(而不是单字节编码的字符串)并且 SDL 是使用 Unicode 支持构建的(即定义了
UNICODE和_UNICODE) 所以它使用宽字符串并在内部调用CreateFileW