Я работаю с Ruby-FFI на Ruby 1.8, чтобы обернуть библиотеку, которая использует строки UTF-16LE. Библиотека имеет функцию C, которая возвращает такую строку.Ruby-FFI (ruby 1.8): чтение кодированных строк UTF-16LE
ли завернуть I функцию с
attach_function [:getVersion, [], :pointer]
и вызвать read_string
возвращаемого указателя, или я обернуть его
attach_function [:getVersion, [], :string]
Что я получаю обратно только первый символ, потому что второй символ равен null (\000
), и, как результат, FFI перестает читать строку там, очевидно, потому что предполагает, что имеет дело с нормальной, единственной нулевой завершенной строкой.
Есть ли что-то, что мне нужно сделать, возможно, при инициализации моей программы Ruby или FFI или иначе, чтобы узнать, что я ожидаю, что строки будут закодированы в UTF-16LE? Как еще я могу обойти это?