繁体   English   中英

如何在C中创建多字节字符

[英]How to create multibyte characters in C

在研究C和C ++中的字符编码时,我遇到了两种通用的编码方式:多字节字符和宽字符。 为了加深我对这些系统(优点和缺点)的理解,我想举一些例子。 由于具有wchar_t类型的本机支持,因此使用宽字符进行示例不是问题。 但是当我想创建一个包含那些所谓的多字节字符的字符串时,我遇到了一个问题。

如何实际创建一个使用与char数组一起使用的编码的多字节字符串(使用Visual C ++)? 确实存在这种编码: http : //www.gnu.org/software/libc/manual/html_node/Shift-State.html 但是我只读它,却从未见过实际的例子。 还是必须为这种字符串创建自己的编码?

如果您能够创建宽字符串文字,只需省略L即可为您提供具有实现定义的编码的多字节字符串文字(gcc可以选择它,我不知道Visual C ++)。

如果您有宽字符串,则可以使用wcstombs (在<stdlib.h> )和wcsrtombs (在<wchar.h> )函数根据C语言环境获得等效的多字节字符串。

C ++语言环境系统还提供了一种进行转换的方法。 (寻找codecvt方面的inout成员,在这里我不会提供有关其用法的教程,站点cppreference包含示例代码,例如out )。

我不确定您是否可以轻松地在Unix或Windows上找到对具有移位状态的编码的支持。 您应该搜索中国,日本,韩国,越南语的编码(例如ISO 2022-JP ,但是在我看来Unix倾向于使用EUC-JP和Windows Shift JIS )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM