8

'بجلی'のようなウルドゥー語の文字を含む文字列があります。これは1x4の配列です。これを外部から表示されるファイルに保存したいと思います。この文字列はメインコマンドウィンドウには表示されませんが、変数'str'は保持します。fprintf(fid、str)を使用してこれを保存し、そのファイルをメモ帳で開くと、元の文字の代わりに「矢印」が表示されます。文字をメモ帳に手動で簡単に貼り付けることができます。問題はどこだ?

4

3 に答える 3

9

fprintf()ではなくfwrite()を使用する必要があります。

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
于 2012-09-14T03:01:27.667 に答える
6

fprintfUTF-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);
于 2015-07-22T13:49:47.937 に答える
0

文字コード表ですべての文字を検索するのは難しいように思われるかもしれません。コードは次のコードに変更できます。

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

これは簡単なようですが、唯一の欠点は、アラビア語/ペルシア語/ウルドゥー語などをインストールする必要があることです。

于 2014-12-07T21:18:42.360 に答える