From 2e95631b07129d53dc174ee69995ab84614a63db Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 24 Feb 2024 19:21:54 +0100 Subject: [PATCH] XLSX: declare OLCStringsAsUTF8 on newly created layers --- autotest/ogr/ogr_xlsx.py | 3 +++ ogr/ogrsf_frmts/xlsx/ogrxlsxdatasource.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/autotest/ogr/ogr_xlsx.py b/autotest/ogr/ogr_xlsx.py index 39971b128d96..164bdd835d29 100755 --- a/autotest/ogr/ogr_xlsx.py +++ b/autotest/ogr/ogr_xlsx.py @@ -59,6 +59,8 @@ def ogr_xlsx_check(ds): assert lyr.TestCapability("foo") == 0 + assert lyr.TestCapability(ogr.OLCStringsAsUTF8) == 1 + lyr = ds.GetLayer(6) assert lyr.GetName() == "Feuille7", "bad layer name" @@ -277,6 +279,7 @@ def test_ogr_xlsx_8(): ds = ogr.GetDriverByName("XLSX").CreateDataSource("/vsimem/ogr_xlsx_8.xlsx") lyr = ds.CreateLayer("foo") + assert lyr.TestCapability(ogr.OLCStringsAsUTF8) == 1 for i in range(30): lyr.CreateField(ogr.FieldDefn("Field%d" % (i + 1))) f = ogr.Feature(lyr.GetLayerDefn()) diff --git a/ogr/ogrsf_frmts/xlsx/ogrxlsxdatasource.cpp b/ogr/ogrsf_frmts/xlsx/ogrxlsxdatasource.cpp index c485582f1a2f..9f730184bf1f 100644 --- a/ogr/ogrsf_frmts/xlsx/ogrxlsxdatasource.cpp +++ b/ogr/ogrsf_frmts/xlsx/ogrxlsxdatasource.cpp @@ -52,6 +52,7 @@ OGRXLSXLayer::OGRXLSXLayer(OGRXLSXDataSource *poDSIn, const char *pszFilename, poDS(poDSIn), osFilename(pszFilename), bUpdated(CPL_TO_BOOL(bUpdatedIn)), bHasHeaderLine(false) { + SetAdvertizeUTF8(true); } /************************************************************************/ @@ -822,7 +823,6 @@ void OGRXLSXDataSource::endElementTable(CPL_UNUSED const char *pszNameIn) if (poCurLayer) { ((OGRMemLayer *)poCurLayer)->SetUpdatable(CPL_TO_BOOL(bUpdatable)); - ((OGRMemLayer *)poCurLayer)->SetAdvertizeUTF8(true); ((OGRXLSXLayer *)poCurLayer)->SetUpdated(false); }