Доступ к Unicode-строкам MATLAB из C
Как я могу получить доступ к базовым данным Unicode строк MATLAB через интерфейсы MATLAB Engine или MEX C?
Вот пример. Давайте поместим символы Юникода в кодированный файл UTF-8 test.txt, а затем прочитаем его как
fid=fopen('test.txt','r','l','UTF-8');
s=fscanf(fid, '%s')
в MATLAB.
Теперь, если я сначала сделаюfeature('DefaultCharacterSet', 'UTF-8')
затем из CengEvalString(ep, "s")
затем в качестве вывода я получаю текст из файла в формате UTF-8. Это доказывает, что MATLAB хранит его как Unicode внутри. Однако если я сделаюmxArrayToString(engGetVariable(ep, "s"))
Я понимаю чтоunicode2native(s, 'Latin-1')
дал бы мне в MATLAB: все не латинские символы-1 заменены на код символа 26. Мне нужно получить доступ к базовым данным Unicode в виде строки C в любом формате Unicode (UTF-8, UTF-16 и т. д.) и сохранение символов не-Latin-1.Это возможно?
Моя платформа - OS X, MATLAB R2012b.
Приложение: Theдокументация прямо заявляет, что «[mxArrayToString ()] поддерживает многобайтовые закодированные символы», но все же он дает мне только приближение по латинице 1 к исходным данным.