fprintf save file as UINT16 or UTF16

Hello all,
I am writing a parameter text file that is later used by some really really old C code I'm using. The code needs the parameter text file to be saved as UTF-16 (uint16) I believe. My current methodology is the following:
f = fopen(fid,'w');
fprintf(f,'REAL parameter_first = 5\n');
fclose(f);
In terminal a quick file -bi file.params text/plain; charset=us-ascii
How do I save it as a UTF-16 ?? Thank you in advance!!

 採用された回答

Jan
Jan 2017 年 7 月 27 日
編集済み: Jan 2017 年 7 月 27 日

0 投票

There is no unique identifier to mark a text file as UTF16. Note that UINT16 is something different. Try this:
f = fopen(fid,'w');
fwrite(f, ['REAL parameter_first = 5', char(10)], 'uint16');
fclose(f);
This uses UINT16 as format, but this works only because Matlab uses UINT16 to store CHAR variables.
Does your import program need a "BOM"? See https://en.wikipedia.org/wiki/Byte_order_mark#UTF-16

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2017 年 7 月 27 日

0 投票

Guessing about the byte order:
f = fopen(fid, 'w', 'ieee-be', 'UTF-16BE');
fprintf(f, 'REAL parameter_first = 5\n');
fclose(fid)
Matters get more complicated if you need to write out characters whose code points are above 255: in such a case you need to use fwrite(), and the task of converting codepoints is most easily done with unicode2native() to produce a sequence of uint8 that you fwrite()

カテゴリ

ヘルプ センター および File ExchangeData Type Conversion についてさらに検索

タグ

質問済み:

2017 年 7 月 27 日

コメント済み:

2020 年 5 月 21 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by