我目前使用的libc库缺少wctomb(),所以我正在寻找一个替代实现。我应该提防哪些复杂性?我可以简单地抓住wchar中的每个字节并将它们粘在一个char数组中吗?创建一个wchar到多字节字符函数
回答
您可能想要拿起P.J. Plauger's book, "The Standard C Library"的副本 - 它提供了一个基本的实现wctomb()
以及宽字符支持的讨论。
它取决于什么编码是wchar
和你期望在char
数组中编码。如果它们是相同的(编码),那么AFAIK是的,你可以逐字节地做,但要小心endiannes。
如果你绝对相信你的程序将永远只能处理ASCII数据(这实在是承担了可怕的事情,但它可能是必要的),那么你可以采取的低字节每个wchar_t
并将其填入char
。但是,如果你必须处理任何类型的Unicode数据,那么你将被卡在实现UTF-8,这是一个最好留给专家的大规模。
UTF-8编码并不太难,如果你的字符已经在Unicode中(即在Unicode的其他编码中)。 (但最好不要重新发明轮子并使用一些图书馆。) – Messa 2010-02-13 16:38:31
如果wchar是< = 127,那么您可以轻松地将每个wchar分配给char,因此只使用7bit。 只要你检查这一点,并创建一个错误,如果它没有给你你保存并可以这样做。
这是因为Unicode字符的前7位(不管是8位,16位还是32位)与ASCII的前7位相同。
如果你真的想写一个转换器,你需要知道很多字符表等等。
有一个全功能的Unicode库调用ICU这是由IBM的启发。它非常强大。但如果没有任何帮助,它可能会有帮助
- 1. WCHAR /字符变量
- 2. 创建从一个字节数组WPF
- 3. NSUTF16LittleEndianStringEncoding创建一个字节数组
- 4. 从字节数组创建一个CGPDFDocument
- 5. 如何在lua中创建一个字符串字典函数?
- 6. 创建一个多级JSON字符串
- 7. 使用字节[]和字符集构造函数创建字符串对象
- 8. 从多个整数数组创建一个字符串数组
- 9. Java - 如何创建一个子字符串,直到达到非数字字符?
- 10. 创建一个返回StorageReference字节的静态函数
- 11. 一个字符串需要多少个字节?字符?
- 12. Python - 如何创建一个8字节的随机字符串?
- 13. Ruby:从字节创建一个字符串
- 14. 创建一个唯一的字母数字10个字符的字符串
- 15. 四个1字节字符到一个4字节int?
- 16. 添加一个字符串或字符数组到一个字节向量
- 17. 创建一个字符数组malloc
- 18. 从字符串创建一个数组
- 19. 多字节字符
- 20. 从一个函数到另一个函数的C#字符串
- 21. 在Haskell中创建一个检查字符的函数
- 22. 如何创建一个字节
- 23. 创建一个ArrayList的字节
- 24. 如何在C中创建多字节字符
- 25. 创建函数来计算字符串中的字符数
- 26. 试图从字符串数组中创建一个字符串
- 27. 创建字符和数字
- 28. 从另一个字符串中创建一个字符串?
- 29. php从字符串值创建函数
- 30. 从字符串创建函数对象
您希望支持哪种多字节编码? – 2010-02-13 16:40:36
也许你从功能的现有实现抓取灵感:http://www.google.com/codesearch?q=wctomb – Manuel 2010-02-13 16:42:57
小心从开放源代码抓住灵感,如果你要建立密切的源 – Totonga 2010-02-13 16:51:52