Skip to content

Commit ce329ca

Browse files
authored
Merge pull request #9301 from rouault/fix_ods_xlsx_utf8
ODS and XLSX: declare OLCStringsAsUTF8 on newly created layers
2 parents 64377d4 + 442318b commit ce329ca

File tree

4 files changed

+8
-2
lines changed

4 files changed

+8
-2
lines changed

autotest/ogr/ogr_ods.py

+3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ def ogr_ods_check(ds):
5959

6060
assert lyr.TestCapability("foo") == 0
6161

62+
assert lyr.TestCapability(ogr.OLCStringsAsUTF8) == 1
63+
6264
lyr = ds.GetLayer(6)
6365
assert lyr.GetName() == "Feuille7", "bad layer name"
6466

@@ -363,6 +365,7 @@ def test_ogr_ods_8():
363365
drv = ogr.GetDriverByName("ODS")
364366
ds = drv.CreateDataSource("/vsimem/ogr_ods_8.ods")
365367
lyr = ds.CreateLayer("foo")
368+
assert lyr.TestCapability(ogr.OLCStringsAsUTF8) == 1
366369
lyr.CreateField(ogr.FieldDefn("Field1", ogr.OFTInteger64))
367370
f = ogr.Feature(lyr.GetLayerDefn())
368371
f.SetField(0, 1)

autotest/ogr/ogr_xlsx.py

+3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ def ogr_xlsx_check(ds):
5959

6060
assert lyr.TestCapability("foo") == 0
6161

62+
assert lyr.TestCapability(ogr.OLCStringsAsUTF8) == 1
63+
6264
lyr = ds.GetLayer(6)
6365
assert lyr.GetName() == "Feuille7", "bad layer name"
6466

@@ -277,6 +279,7 @@ def test_ogr_xlsx_8():
277279

278280
ds = ogr.GetDriverByName("XLSX").CreateDataSource("/vsimem/ogr_xlsx_8.xlsx")
279281
lyr = ds.CreateLayer("foo")
282+
assert lyr.TestCapability(ogr.OLCStringsAsUTF8) == 1
280283
for i in range(30):
281284
lyr.CreateField(ogr.FieldDefn("Field%d" % (i + 1)))
282285
f = ogr.Feature(lyr.GetLayerDefn())

ogr/ogrsf_frmts/ods/ogrodsdatasource.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ OGRODSLayer::OGRODSLayer(OGRODSDataSource *poDSIn, const char *pszName,
7272
bUpdated(CPL_TO_BOOL(bUpdatedIn)), bHasHeaderLine(false),
7373
m_poAttrQueryODS(nullptr)
7474
{
75+
SetAdvertizeUTF8(true);
7576
}
7677

7778
/************************************************************************/
@@ -846,7 +847,6 @@ void OGRODSDataSource::endElementTable(
846847

847848
reinterpret_cast<OGRMemLayer *>(poCurLayer)
848849
->SetUpdatable(bUpdatable);
849-
reinterpret_cast<OGRMemLayer *>(poCurLayer)->SetAdvertizeUTF8(true);
850850
reinterpret_cast<OGRODSLayer *>(poCurLayer)->SetUpdated(false);
851851
}
852852

ogr/ogrsf_frmts/xlsx/ogrxlsxdatasource.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ OGRXLSXLayer::OGRXLSXLayer(OGRXLSXDataSource *poDSIn, const char *pszFilename,
5252
poDS(poDSIn), osFilename(pszFilename), bUpdated(CPL_TO_BOOL(bUpdatedIn)),
5353
bHasHeaderLine(false)
5454
{
55+
SetAdvertizeUTF8(true);
5556
}
5657

5758
/************************************************************************/
@@ -822,7 +823,6 @@ void OGRXLSXDataSource::endElementTable(CPL_UNUSED const char *pszNameIn)
822823
if (poCurLayer)
823824
{
824825
((OGRMemLayer *)poCurLayer)->SetUpdatable(CPL_TO_BOOL(bUpdatable));
825-
((OGRMemLayer *)poCurLayer)->SetAdvertizeUTF8(true);
826826
((OGRXLSXLayer *)poCurLayer)->SetUpdated(false);
827827
}
828828

0 commit comments

Comments
 (0)