写Unicode字符串在Matlab文件(Write unicode strings to a fi

2019-09-22 10:29发布

我有一个包含乌尔都语字符,如“بجلی”这是1×4阵列的字符串。 我想这个保存到一个文件,这将是从外部观察。 虽然在主命令窗口此字符串犯规显示器,但变量“STR”不持有它。 当我保存这个使用fprintf(FID,STR),并在记事本打开该文件没有出现,而不是在原有人物的箭“。 我可以很容易地我的人物手工粘贴到记事本中。 问题出在哪儿?

Answer 1:

您需要使用fwrite()将不fprintf中():

fid = fopen('temp.txt', 'w');

str = char([1576, 1580,  1604, 1740, 10]);

encoded_str = unicode2native(str, 'UTF-8');
fwrite(fid, encoded_str, 'uint8');

fclose(fid);

验证有:

perl -E "open my $fh, q{<:utf8}, q{temp.txt}; while (<$fh>) {while (m/(.)/g) {say ord $1}}"
1576
1580
1604
1740


Answer 2:

这是不是真的有必要,以避免fprintf为了写UTF-8字符串的文件。 我们的想法是正确打开文件:

f = fopen('temp.txt', 'w', 'native', 'UTF-8');
s = char([1576, 1580, 1604, 1740]);
fprintf(f, 'This is written as UTF-8: %s.\n', s);
fclose(f);


Answer 3:

查找在字符映射表的每个字符似乎很难。 该代码可以被修改为下面的代码:

fid = fopen('temp.txt', 'w');
str = char(['س','ل','ا','م');
encoded_str = unicode2native(str, 'UTF-8');
fwrite(fid, encoded_str, 'uint8');
fclose(fid);

这似乎是更容易,但美中不足的是,它需要你有阿拉伯语/波斯语/ Urdo,......安装。



文章来源: Write unicode strings to a file in Matlab