Bug 33635 - CSV export display broken diacritics in Excel
Summary: CSV export display broken diacritics in Excel
Status: RESOLVED FIXED
Alias: None
Product: Koha
Classification: Unclassified
Component: Staff interface (show other bugs)
Version: Main
Hardware: All All
: P5 - low normal
Assignee: Martin Renvoize (ashimema)
QA Contact: Lucas Gass (lukeg)
URL:
Keywords:
: 39197 (view as bug list)
Depends on:
Blocks:
 
Reported: 2023-04-28 13:11 UTC by Katrin Fischer
Modified: 2025-03-14 06:15 UTC (History)
6 users (show)

See Also:
Change sponsored?: ---
Patch complexity: ---
Documentation contact:
Documentation submission:
Text to go in the release notes:
Version(s) released in:
24.11.00
Circulation function:


Attachments
Bug 33635: Add BOM to report exports as CSV (1.27 KB, patch)
2024-09-18 04:44 UTC, Martin Renvoize (ashimema)
Details | Diff | Splinter Review
Bug 33635: Add BOM to report exports as CSV (1.32 KB, patch)
2024-09-18 14:34 UTC, PTFS Europe Sandboxes
Details | Diff | Splinter Review
Bug 33635: Add BOM to report exports as CSV (1.38 KB, patch)
2024-09-20 16:56 UTC, Lucas Gass (lukeg)
Details | Diff | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Katrin Fischer 2023-04-28 13:11:36 UTC
This has been a re-occurring support issue:

When using one of Koha's many CSV download options, the exported CSV file doesn't open as UTF-8 in Excel, resulting in broken diacritics. LibreOffice doesn't show the issue.

The only way to fix it right now is not to open the file directly, but to use the import functionality in Excel as it lets you pick the encoding and separators. This means a lot of extra steps and clicks, which make the CSV export functionalities in Koha hard to use.

It turns out that Excel will import the CSV correctly, if we convert the encoding of the exported CSV file from UTF-8 to UTF-8-BOM.

Problematic CSV exports include:

* Exporting a basket summary page as CSV
* Using CSV profile based exports in general, including: lists, basket, lost items report
* ...

Can we 'fix' the encoding to use BOM?
Comment 1 Martin Renvoize (ashimema) 2024-09-18 04:35:30 UTC
I started thinking about this after looking  at bug 23685 too.

I'm not entirely sure if we want to add a BOM to our CSV exports or not.. there are still programs out there written to work with ascii only and they struggle with BOM's.

That said, excel is the most likely target so adding a BOM for that would be sensible.

We could do with checking that adding said BOM doesn't break other popular tools like OpenOffice or LibreOffice however.

Text::CSV::Encoded doesn't have any native BOM support, but it appears we're just dealing with strings.

Perhaps we could use File::BOM
Comment 2 Martin Renvoize (ashimema) 2024-09-18 04:44:11 UTC
Created attachment 171650 [details] [review]
Bug 33635: Add BOM to report exports as CSV

When you export a report as CSV excel will not recognise that it's
encoding is utf-8 unless there is a correct Byte Order Mark prepended to
the file.

This patch adds such a BOM to the output file allowing Excel to treat
the file correctly.
Comment 3 Martin Renvoize (ashimema) 2024-09-18 04:44:46 UTC
Please test this
Comment 4 Michaela Sieber 2024-09-18 14:33:37 UTC
Test plan:

1.) search for a title with one item and edit the item
2.) add the internal note: "Test the diacritics ä ö ü  é è ÄÖÜ"
3.) copy the biblionumber of the title
4.) create an sql report:
 SELECT itemnotes_nonpublic from items where biblionumber=<copied biblionumber>
5.) run report
6.) download as csv file
7.) open in excel
8.) Check that the diacritics do not look like above (internal note)
9.) Apply Patch
10.) repeat steps 5-7
11.) Check that the diacritics look like above (internal note)
Comment 5 PTFS Europe Sandboxes 2024-09-18 14:34:19 UTC
Created attachment 171677 [details] [review]
Bug 33635: Add BOM to report exports as CSV

When you export a report as CSV excel will not recognise that it's
encoding is utf-8 unless there is a correct Byte Order Mark prepended to
the file.

This patch adds such a BOM to the output file allowing Excel to treat
the file correctly.

Signed-off-by: Michaela Sieber <michaela.sieber@kit.edu>
Comment 6 Martin Renvoize (ashimema) 2024-09-20 12:56:44 UTC
You're a star Micheal, thanks for testing ☺️
Comment 7 Lucas Gass (lukeg) 2024-09-20 16:56:16 UTC
Created attachment 171837 [details] [review]
Bug 33635: Add BOM to report exports as CSV

When you export a report as CSV excel will not recognise that it's
encoding is utf-8 unless there is a correct Byte Order Mark prepended to
the file.

This patch adds such a BOM to the output file allowing Excel to treat
the file correctly.

Signed-off-by: Michaela Sieber <michaela.sieber@kit.edu>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Comment 8 David Cook 2024-09-30 01:25:12 UTC
Nice one. This kind of thing has driven me nuts elsewhere in the past...
Comment 9 Martin Renvoize (ashimema) 2024-09-30 14:33:47 UTC
Thanks for all the hard work!

Pushed to main for the next 24.11.00 release as RM Assistant
Comment 10 Lucas Gass (lukeg) 2024-11-18 22:16:08 UTC
Doesn't apply to 24.05.x, rebase if needed.
Comment 11 Mathieu Saby 2025-02-25 13:11:21 UTC
Oh it seems duplicate of https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=39197 but I think I still have this issue (no BOM) in my 21.11 Koha. I am going to check again
Comment 12 Mathieu Saby 2025-02-25 13:18:49 UTC
I contact my support provider to check if is not working in our Koha and see why.
Comment 13 Katrin Fischer 2025-02-25 13:53:11 UTC
*** Bug 39197 has been marked as a duplicate of this bug. ***
Comment 14 Katrin Fischer 2025-02-25 13:54:05 UTC
(In reply to Mathieu Saby from comment #12)
> I contact my support provider to check if is not working in our Koha and see
> why.

This is only fixed in 24.11 - see "versions released in".
Comment 15 Mathieu Saby 2025-02-25 15:19:09 UTC
Oh of course, I need sleep ;-) and my Koha is 23.11...

It could be nice if this patch could be applied to 24.05 and 23.11
Comment 16 David Cook 2025-03-14 05:50:32 UTC
I'm working on a similar problem in labels/label-create-csv.pl and I noticed adding the BOM isn't enough in all cases.

With certain data, for some reason, it doesn't come out UTF-8 encoded. It comes out Latin-1 encoded instead. I think because it bumps into things like \xF6 which are actually Unicode codepoints and not UTF-8 bytes. But if I explicitly state the output is UTF-8 under the BOM print then all is well:

binmode STDOUT, ':encoding(UTF-8)';

Text::CSV_XS explains this a bit https://metacpan.org/pod/Text::CSV_XS#Unicode

And... looking at reports/guided_reports.pl it looks like we get around that problem because we're using Text::CSV::Encoded. But first decoding and scrubbing the string for the header? Interesting... 

Looks like Text::CSV::Encoded was added back in 2014 and can still use Text::CSV_XS under the hood, so that's good...
Comment 17 David Cook 2025-03-14 06:15:40 UTC
(In reply to David Cook from comment #8)
> Nice one. This kind of thing has driven me nuts elsewhere in the past...

PS Bug 39327 - "UTF-8 BOM missing from label creator CSV and some UTF-8 output  broken" is ready for testing :D