A Byte order mark (BOM) inserted by writetable (xml export and xlsx export), why?

A byte order mark (BOM) is inserted by writetable when exporting a table to a CSV file, using this command:
writetable(T, ‘T.csv’, 'Encoding', 'UTF-8')
This zero-length BOM character (U+FEFF) is seen in the following image taken from a text editor (showing invisibles), the BOM being pictured as a red dot (invisible character) at the very first position of the file content.
I can understand the logic behind inserting this BOM (helping read a text file with a specific encoding), even if I prefer the BOM addition to be optional.
What I don’t understand is the rationale of inserting a BOM in each tag of the same table, exported in XML format (see the red dots before each of the UNIX_TIMESTAMP tags).
It doesn't make sense to me. The UNIX_TIMESTAMP tags should not have a BOM, right? Or is there a particular reason?
PS: what would be the most efficient way to get rid of the BOM(s)?
PS2: the BOMs are also present in the UNIX_TIMESTAMP cell (cell A1) when exporting to XLSX. This is not right too. It should only contain a string with ASCII characters in the current case.
Many thanks

댓글 수: 2

I digged further, and the problem does not come from writetable, my bad. Will prepare an answer.

댓글을 달려면 로그인하십시오.

 채택된 답변

Stephane
Stephane 2024년 3월 19일
편집: Stephane 2024년 3월 19일
The problem does not come from writetable actually, but from a hidden character in the char values contained in the cell array defining VariableNames.
... 3 hours on this ... but at least I solved it :0
'UNIX_TIMESTAMP' contained an invisible character at the start of the char.
t_equal_cell = table(timestamp, x_g, VariableNames={'UNIX_TIMESTAMP','Gx'});

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

제품

릴리스

R2023b

질문:

2024년 3월 19일

편집:

2024년 3월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by