使用wcstombs()将wchar_t *(包含Unicode)转换为依赖于语言环境的MBCS(char *)

时间:2013-02-05 09:32:16

标签: unicode

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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