我在为 ruby 创建 C-Extension 时遇到了一些麻烦,这让我开始思考。我想知道 Ruby (1.9.1) 如何在内部处理字符串(以及所有编码的东西)?
如果我有一个类似 的字符串"o"
,并将该字符串传递给一个 C-Function (as ),我可以使用和宏VALUE
很容易地处理它。但是,如果我制作字符串(德语变音符号),会给我.RSTRING_PTR()
RSTRING_LEN()
ö
RSTRING_LEN()
2
在那种情况下,我对 的内容有点困惑RSTRING_PTR()
,这两个字节是0xA4
和0xC3
。这是什么编码?在将字符串传递给 C 函数之前,我尝试使用"ö".force_encoding( ... )
不同的编码,但这根本不影响的内容RSTRING_PTR
。
我需要的是一种在我的 C 函数中将字符串表示为WCHAR*
编码UTF-16
(在 的情况下为.."ö"
0x00F6
感谢您提前提供任何帮助