Accediendo a las cadenas Unicode de MATLAB desde C
¿Cómo puedo acceder a los datos Unicode subyacentes de las cadenas de MATLAB a través de las interfaces de MATLAB Engine o MEX C?
Aquí hay un ejemplo. Pongamos los caracteres Unicode en un archivo codificado en UTF-8 test.txt, luego lo leemos como
fid=fopen('test.txt','r','l','UTF-8');
s=fscanf(fid, '%s')
en MATLAB.
Ahora si primero lo hagofeature('DefaultCharacterSet', 'UTF-8')
, luego de CengEvalString(ep, "s")
, luego como salida recupero el texto del archivo como UTF-8. Esto demuestra que MATLAB lo almacena como Unicode internamente. Sin embargo si lo hagomxArrayToString(engGetVariable(ep, "s"))
, Entiendo queunicode2native(s, 'Latin-1')
me daría en MATLAB: todos los caracteres que no sean Latin-1 fueron reemplazados por el código de carácter 26. Lo que necesito es obtener acceso a los datos Unicode subyacentes como una cadena C en cualquier formato Unicode (UTF-8, UTF-16, etc.) , y conservando los caracteres no latinos-1.es posible?
Mi plataforma es OS X, MATLAB R2012b.
Anexo: Eldocumentación declara explícitamente que "[mxArrayToString ()] admite caracteres codificados multibyte", pero aún así solo me proporciona una aproximación de Latin-1 a los datos originales.