gpt4 book ai didi

c - wcstombs : character encoding?

转载 作者:太空狗 更新时间:2023-10-29 15:56:23 28 4
gpt4 key购买 nike

wcstombs documentation说,它“将宽字符代码序列转换为多字节字符串”。但它从来没有说什么是“宽字符”。

它是隐式的,比如将 utf-16 转换为 utf-8,还是转换是由某个环境变量定义的?

还有 wcstombs 的典型用例是什么?

最佳答案

您将 setlocale() 标准函数与 LC_CTYPE(或 LC_ALL)类别一起使用,以设置库在 之间使用的映射>wchar_t 字符和多字节字符。传递给 setlocale() 的实际语言环境名称是实现定义的,因此您需要在编译器的文档中查找它。

例如,对于 MSVC,您可能会使用

setlocale( LC_ALL, ".1252" );

将 C 运行时设置为使用代码页 1252 作为多字节字符集。请注意,MSVC 文档明确指出不能将多字节字符集的语言环境设置为 UTF-7 或 UTF8:

The set of available languages, country/region codes, and code pages includes all those supported by the Win32 NLS API except code pages that require more than two bytes per character, such as UTF-7 and UTF-8. If you provide a code page like UTF-7 or UTF-8, setlocale will fail, returning NULL.

“宽字符”wchar_t 类型旨在能够支持系统支持的任何字符集 - 标准未定义 wchar_t 的大小类型(它可以小到 char 或任何更大的整数类型)。在 Windows 上,它是系统的“内部”Unicode 编码,即 UTF-16(WinXP 之前的 UCS-2)。不过,老实说,我在 MSVC 文档中找不到关于它的直接引用。严格来说,实现应该调用这个,但我找不到。

关于c - wcstombs : character encoding?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190190/

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