필터 지우기
필터 지우기

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

조회 수: 9 (최근 30일)
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
Stephane
Stephane 2024년 3월 19일
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개)

카테고리

Help CenterFile Exchange에서 Other Formats에 대해 자세히 알아보기

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by