gpt4 book ai didi

c - Windows 中的 UTF-8

转载 作者:可可西里 更新时间:2023-11-01 12:11:15 25 4
gpt4 key购买 nike

如何在 C Windows 程序中将代码页设置为 UTF-8?

我有一个使用 fopen 打开文件的第三方库。我可以使用 wcstombs 将我的 Unicode 文件名转换为当前代码页,但是如果用户的文件名包含代码页之外的字符,那么这会中断。

理想情况下,我会调用 _setmbcp(65001) 将代码页设置为 UTF-8,但是 _setmbcp 的 MSDN 文档指出不支持 UTF-8。

我该如何解决这个问题?

最佳答案

不幸的是,没有办法让 Unicode 成为 Windows 中的当前代码页。 CP_UTF7CP_UTF8 常量是伪代码页,仅在 MultiByteToWideChar 中使用和 WideCharToMultiByte转换函数,就像 Ben 提到的那样。

您的问题类似于 fstream C++ 类的问题。 fstream 构造函数只接受 char* 名称,因此无法打开具有真正 Unicode 名称的文件。 VC 提供的唯一解决方案是 hack:单独打开文件,然后将句柄设置为流对象。恐怕这不适合您,当然,因为第三方库可能不接受句柄。

我能想到的唯一解决方案是创建一个具有非 Unicode 名称的临时文件,该文件硬链接(hard link)到原始文件,并将其用作参数。

关于c - Windows 中的 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/166503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com