我正在使用 Ruby 1.8 上的 Ruby-FFI 来包装一个使用 UTF-16LE 字符串的库。该库有一个返回此类字符串的 C 函数。
我是否用
attach_function [:getVersion, [], :pointer]
并调用read_string
返回的指针,或者我是否用
attach_function [:getVersion, [], :string]
我得到的只是第一个字符,因为第二个字符是 null ( \000
),因此,FFI 停止在那里读取字符串,显然是因为它假设它正在处理一个正常的、单空终止的字符串。
我需要做些什么,也许是在我的 Ruby 程序或 FFI 或其他方式的初始化中,让它知道我希望字符串是 UTF-16LE 编码的?我还能如何解决这个问题?