我有一个包含乌尔都语字符,如“بجلی”这是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