passing unicode string from C mex function to Matlab
10 ビュー (過去 30 日間)
古いコメントを表示
Hello, I need to send a unicode string from my C mex function to Matlab. At the moment, I try to use mxCreateString to create the variable to return, but unfortunately, I do not get the correct string in Matlab. The string in my C mex function is UTF8 encoded. As far as I can see, the mxCreateString takes a char* only. Does this mean, that mxCreateString can not handle unicode strings? Is there any other way to return unicode strings to Matlab?
Am I correct that Matlab itself uses UTF16 to store strings?
Thank you in advance,
Christian
0 件のコメント
採用された回答
Friedrich
2013 年 4 月 9 日
編集済み: Friedrich
2013 年 4 月 9 日
Hi,
at least the doc states that the mxChar type is 2 byte:
What happens when you use mxCreateCharArray together with a mxGetData and a memcopy? Or you use a loop to write the data in and cast accordingly?
mxArry *tmp = mxCreateCharArray(...)
mxChar *charData = (mxChar *)mxGetData(tmp);
for(j=0; j < nelem_tmp; j++) {
charData[j] = (mxChar)Your_string[j]
}
2 件のコメント
Jan
2013 年 4 月 9 日
@Christian: Did you try this with non-ASCII values? The conversion from UTF-8 should actually fail tremendously with this method.
その他の回答 (1 件)
Jan
2013 年 4 月 9 日
See also:
- http://www.mathworks.com/matlabcentral/answers/3198-convert-matlab-string-to-wchar-in-c-mex-under-windows-and-linux
- http://www.mathworks.com/matlabcentral/newsreader/view_thread/301249
There is the undocumented function mxArrayToString_UTF8.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で MATLAB Compiler についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!