私はRuby 1.8でUTF-16LE文字列を使用するライブラリをラップするためにRuby-FFIを使用しています。ライブラリには、このようなStringを返すC関数があります。私はRuby-FFI(ruby 1.8):UTF-16LEでエンコードされた文字列を読み取る
attach_function [:getVersion, [], :pointer]
と機能をラップし、返されたポインタにread_string
を呼び出し、またはので、私は、私は戻って取得する唯一の最初の文字がある
attach_function [:getVersion, [], :string]
でそれをラップするかどうかは
2番目の文字がヌル(\000
)であるため、FFIは文字列の読み込みを停止します。これは、通常の単一ヌル終了文字列を処理していると仮定しているためです。
RubyプログラムやFFIなどの初期化時に、私は文字列がUTF-16LEでエンコードされることを期待していますか?これ以外はどうすればいいですか?