Skip to content

Commit 747e497

Browse files
committed
use QTextCodec::codecForLocale() where "System" is not available (like android)
1 parent a30eb37 commit 747e497

File tree

6 files changed

+17
-10
lines changed

6 files changed

+17
-10
lines changed

src/app/ogr/qgsopenvectorlayerdialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ QgsOpenVectorLayerDialog::QgsOpenVectorLayerDialog( QWidget* parent, Qt::WFlags
4646
cmbEncodings->addItems( QgsVectorDataProvider::availableEncodings() );
4747

4848
QSettings settings;
49-
QString enc = settings.value( "/UI/encoding", QString( "System" ) ).toString();
49+
QString enc = settings.value( "/UI/encoding", "System" ).toString();
5050

5151
restoreGeometry( settings.value( "/Windows/OpenVectorLayer/geometry" ).toByteArray() );
5252

src/app/ogr/qgsvectorlayersaveasdialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ QgsVectorLayerSaveAsDialog::QgsVectorLayerSaveAsDialog( QWidget* parent, Qt::WFl
4949

5050
mEncodingComboBox->addItems( QgsVectorDataProvider::availableEncodings() );
5151

52-
QString enc = settings.value( "/UI/encoding", QString( "System" ) ).toString();
52+
QString enc = settings.value( "/UI/encoding", "System" ).toString();
5353
int idx = mEncodingComboBox->findText( enc );
5454
if ( idx < 0 )
5555
{

src/core/qgsvectordataprovider.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ QgsVectorDataProvider::QgsVectorDataProvider( QString uri )
3131
, mFetchFeaturesWithoutGeom( true )
3232
{
3333
QSettings settings;
34-
setEncoding( settings.value( "/UI/encoding", QString( "System" ) ).toString() );
34+
setEncoding( settings.value( "/UI/encoding", "System" ).toString() );
3535
}
3636

3737

@@ -151,7 +151,7 @@ int QgsVectorDataProvider::capabilities() const
151151

152152
void QgsVectorDataProvider::setEncoding( const QString& e )
153153
{
154-
QTextCodec* ncodec = QTextCodec::codecForName( e.toLocal8Bit().data() );
154+
QTextCodec* ncodec = QTextCodec::codecForName( e.toLocal8Bit().constData() );
155155
if ( ncodec )
156156
{
157157
mEncoding = ncodec;
@@ -160,6 +160,10 @@ void QgsVectorDataProvider::setEncoding( const QString& e )
160160
{
161161
QgsMessageLog::logMessage( tr( "Codec %1 not found. Falling back to system locale" ).arg( e ) );
162162
mEncoding = QTextCodec::codecForName( "System" );
163+
164+
if ( !mEncoding )
165+
mEncoding = QTextCodec::codecForLocale();
166+
163167
Q_ASSERT( mEncoding );
164168
}
165169
}

src/core/qgsvectorfilewriter.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,17 +187,19 @@ QgsVectorFileWriter::QgsVectorFileWriter(
187187
QgsDebugMsg( "Created data source" );
188188

189189
// use appropriate codec
190-
mCodec = QTextCodec::codecForName( fileEncoding.toLocal8Bit().data() );
190+
mCodec = QTextCodec::codecForName( fileEncoding.toLocal8Bit().constData() );
191191
if ( !mCodec )
192192
{
193-
QSettings settings;
194-
QString enc = settings.value( "/UI/encoding", QString( "System" ) ).toString();
195193
QgsDebugMsg( "error finding QTextCodec for " + fileEncoding );
196-
mCodec = QTextCodec::codecForName( enc.toLocal8Bit().data() );
194+
195+
QSettings settings;
196+
QString enc = settings.value( "/UI/encoding", "System" ).toString();
197+
mCodec = QTextCodec::codecForName( enc.toLocal8Bit().constData() );
197198
if ( !mCodec )
198199
{
199200
QgsDebugMsg( "error finding QTextCodec for " + enc );
200201
mCodec = QTextCodec::codecForLocale();
202+
Q_ASSERT( mCodec );
201203
}
202204
}
203205

src/gui/qgsencodingfiledialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ QgsEncodingFileDialog::QgsEncodingFileDialog( QWidget * parent,
4444
if ( encoding.isEmpty() )
4545
{
4646
QSettings settings;
47-
enc = settings.value( "/UI/encoding", QString( "System" ) ).toString();
47+
enc = settings.value( "/UI/encoding", "System" ).toString();
4848
}
4949

5050
// The specified decoding is added if not existing alread, and then set current.

src/plugins/spit/qgsshapefile.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ QgsShapeFile::QgsShapeFile( QString name, QString encoding )
5959
geometries << "NULL" << "POINT" << "LINESTRING" << "POLYGON" << "MULTIPOINT"
6060
<< "MULTILINESTRING" << "MULTIPOLYGON" << "GEOMETRYCOLLECTION";
6161

62-
codec = QTextCodec::codecForName( encoding.toLocal8Bit().data() );
62+
codec = QTextCodec::codecForName( encoding.toLocal8Bit().constData() );
6363
if ( !codec )
6464
codec = QTextCodec::codecForLocale();
65+
Q_ASSERT( codec );
6566
}
6667

6768
QgsShapeFile::~QgsShapeFile()

0 commit comments

Comments
 (0)