0

我的输入是 Unicode 字符,例如:"(U+00DB) (U+0081)" (wchar_t*)。我使用 wcstombs 将此宽字符字符串转换为 char * (MBCS)。由于 Unicode 已经以 UTF-8 编码,我希望它以 DB81 char* 形式返回逐字节复制的 Unicode 序列。但相反,我得到了 c3 9b。这发生在 Linux 和 Windows 上,我只得到“DB 81”。

我需要打开一个名为 DB 81 的文件(如 hexdump 所示),但 fopen 使用 char* 文件名。因此我必须将此 wchar_t* 转换为 MBCS。请帮忙!!

4

1 回答 1

0

不,你想做的不是你认为你应该做的。

fopen() 在任何情况下都无法处理系统上所有可能的文件名,因为它缺乏 unicode 支持。

请参阅http://www.utf8everywhere.org以了解如何使用 _wfopen() 进行操作。

于 2013-02-06T15:31:16.537 回答