mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
QgsVectorFileWriter::MetaData: add a compulsoryEncoding member
* Some formats require a compulsory encoding, typically UTF-8. Change initMetadata() to indicate UTF-8 compulsory encoding for GeoJSON, GeoRSS, GML, GPKG, GPX, KML, SQLite, SpatiaLite, FileGDB, XLSX and ODS * QgsVectorFileWriter::init(): make it override the user specified encoding if the format has a compulsory encoding. And remove hard-coded case for KML.
This commit is contained in:
parent
b1efb9a72c
commit
3ee7d59e18
@ -74,7 +74,7 @@ class QgsVectorFileWriter
|
|||||||
{
|
{
|
||||||
MetaData();
|
MetaData();
|
||||||
|
|
||||||
MetaData( const QString& longName, const QString& trLongName, const QString& glob, const QString& ext, const QMap<QString, QgsVectorFileWriter::Option*>& driverOptions, const QMap<QString, QgsVectorFileWriter::Option*>& layerOptions );
|
MetaData( const QString& longName, const QString& trLongName, const QString& glob, const QString& ext, const QMap<QString, QgsVectorFileWriter::Option*>& driverOptions, const QMap<QString, QgsVectorFileWriter::Option*>& layerOptions, const QString& compulsoryEncoding = QString() );
|
||||||
|
|
||||||
QString longName;
|
QString longName;
|
||||||
QString trLongName;
|
QString trLongName;
|
||||||
@ -82,6 +82,8 @@ class QgsVectorFileWriter
|
|||||||
QString ext;
|
QString ext;
|
||||||
QMap<QString, QgsVectorFileWriter::Option*> driverOptions;
|
QMap<QString, QgsVectorFileWriter::Option*> driverOptions;
|
||||||
QMap<QString, QgsVectorFileWriter::Option*> layerOptions;
|
QMap<QString, QgsVectorFileWriter::Option*> layerOptions;
|
||||||
|
/** Some formats require a compulsory encoding, typically UTF-8. If no compulsory encoding, empty string */
|
||||||
|
QString compulsoryEncoding;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum WriterError
|
enum WriterError
|
||||||
|
@ -238,21 +238,6 @@ void QgsVectorFileWriter::init( QString vectorFileName,
|
|||||||
|
|
||||||
deleteShapeFile( vectorFileName );
|
deleteShapeFile( vectorFileName );
|
||||||
}
|
}
|
||||||
else if ( driverName == "KML" )
|
|
||||||
{
|
|
||||||
if ( !vectorFileName.endsWith( ".kml", Qt::CaseInsensitive ) )
|
|
||||||
{
|
|
||||||
vectorFileName += ".kml";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( fileEncoding.compare( "UTF-8", Qt::CaseInsensitive ) != 0 )
|
|
||||||
{
|
|
||||||
QgsDebugMsg( "forced UTF-8 encoding for KML" );
|
|
||||||
fileEncoding = "UTF-8";
|
|
||||||
}
|
|
||||||
|
|
||||||
QFile::remove( vectorFileName );
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( metadataFound )
|
if ( metadataFound )
|
||||||
@ -277,6 +262,16 @@ void QgsVectorFileWriter::init( QString vectorFileName,
|
|||||||
QFile::remove( vectorFileName );
|
QFile::remove( vectorFileName );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( metadataFound && !metadata.compulsoryEncoding.isEmpty() )
|
||||||
|
{
|
||||||
|
if ( fileEncoding.compare( metadata.compulsoryEncoding, Qt::CaseInsensitive ) != 0 )
|
||||||
|
{
|
||||||
|
QgsDebugMsg( QString( "forced %1 encoding for %2" ).arg( metadata.compulsoryEncoding ).arg( driverName ) );
|
||||||
|
fileEncoding = metadata.compulsoryEncoding;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
char **options = nullptr;
|
char **options = nullptr;
|
||||||
if ( !datasourceOptions.isEmpty() )
|
if ( !datasourceOptions.isEmpty() )
|
||||||
{
|
{
|
||||||
@ -865,7 +860,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.geojson",
|
"*.geojson",
|
||||||
"geojson",
|
"geojson",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -959,7 +955,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.xml",
|
"*.xml",
|
||||||
"xml",
|
"xml",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1048,7 +1045,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.gml",
|
"*.gml",
|
||||||
"gml",
|
"gml",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1090,7 +1088,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.gpkg",
|
"*.gpkg",
|
||||||
"gpkg",
|
"gpkg",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1168,7 +1167,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.gpx",
|
"*.gpx",
|
||||||
"gpx",
|
"gpx",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1233,7 +1233,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.kml",
|
"*.kml",
|
||||||
"kml",
|
"kml",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1498,7 +1499,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.sqlite",
|
"*.sqlite",
|
||||||
"sqlite",
|
"sqlite",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1579,7 +1581,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.sqlite",
|
"*.sqlite",
|
||||||
"sqlite",
|
"sqlite",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
// AutoCAD DXF
|
// AutoCAD DXF
|
||||||
@ -1669,7 +1672,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.gdb",
|
"*.gdb",
|
||||||
"gdb",
|
"gdb",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1694,7 +1698,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.xlsx",
|
"*.xlsx",
|
||||||
"xlsx",
|
"xlsx",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1719,7 +1724,8 @@ QMap<QString, QgsVectorFileWriter::MetaData> QgsVectorFileWriter::initMetaData()
|
|||||||
"*.ods",
|
"*.ods",
|
||||||
"ods",
|
"ods",
|
||||||
datasetOptions,
|
datasetOptions,
|
||||||
layerOptions
|
layerOptions,
|
||||||
|
"UTF-8"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -120,13 +120,14 @@ class CORE_EXPORT QgsVectorFileWriter
|
|||||||
MetaData()
|
MetaData()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
MetaData( const QString& longName, const QString& trLongName, const QString& glob, const QString& ext, const QMap<QString, Option*>& driverOptions, const QMap<QString, Option*>& layerOptions )
|
MetaData( const QString& longName, const QString& trLongName, const QString& glob, const QString& ext, const QMap<QString, Option*>& driverOptions, const QMap<QString, Option*>& layerOptions, const QString& compulsoryEncoding = QString() )
|
||||||
: longName( longName )
|
: longName( longName )
|
||||||
, trLongName( trLongName )
|
, trLongName( trLongName )
|
||||||
, glob( glob )
|
, glob( glob )
|
||||||
, ext( ext )
|
, ext( ext )
|
||||||
, driverOptions( driverOptions )
|
, driverOptions( driverOptions )
|
||||||
, layerOptions( layerOptions )
|
, layerOptions( layerOptions )
|
||||||
|
, compulsoryEncoding( compulsoryEncoding )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
QString longName;
|
QString longName;
|
||||||
@ -135,6 +136,8 @@ class CORE_EXPORT QgsVectorFileWriter
|
|||||||
QString ext;
|
QString ext;
|
||||||
QMap<QString, Option*> driverOptions;
|
QMap<QString, Option*> driverOptions;
|
||||||
QMap<QString, Option*> layerOptions;
|
QMap<QString, Option*> layerOptions;
|
||||||
|
/** Some formats require a compulsory encoding, typically UTF-8. If no compulsory encoding, empty string */
|
||||||
|
QString compulsoryEncoding;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum WriterError
|
enum WriterError
|
||||||
|
Loading…
x
Reference in New Issue
Block a user