Skip to content

Commit 8930633

Browse files
committed
vector provider: fetch codec list from Qt and default to System when a unavailable codecs is requested (might cure issueID #4801)
1 parent 50cdcc3 commit 8930633

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/core/qgsvectordataprovider.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "qgsfeature.h"
2424
#include "qgsfield.h"
2525
#include "qgslogger.h"
26+
#include "qgsmessagelog.h"
2627

2728
QgsVectorDataProvider::QgsVectorDataProvider( QString uri )
2829
: QgsDataProvider( uri )
@@ -157,7 +158,9 @@ void QgsVectorDataProvider::setEncoding( const QString& e )
157158
}
158159
else
159160
{
160-
QgsDebugMsg( "error finding QTextCodec for " + e );
161+
QgsMessageLog::logMessage( tr( "Codec %1 not found. Falling back to system locale" ).arg( e ) );
162+
mEncoding = QTextCodec::codecForName( "System" );
163+
Q_ASSERT( mEncoding );
161164
}
162165
}
163166

@@ -457,6 +460,12 @@ const QStringList &QgsVectorDataProvider::availableEncodings()
457460
{
458461
if ( smEncodings.isEmpty() )
459462
{
463+
foreach( QString codec, QTextCodec::availableCodecs() )
464+
{
465+
smEncodings << codec;
466+
}
467+
qSort( smEncodings );
468+
#if 0
460469
smEncodings << "BIG5";
461470
smEncodings << "BIG5-HKSCS";
462471
smEncodings << "EUCJP";
@@ -502,6 +511,7 @@ const QStringList &QgsVectorDataProvider::availableEncodings()
502511
smEncodings << "Apple Roman";
503512
smEncodings << "TIS-620";
504513
smEncodings << "System";
514+
#endif
505515
}
506516

507517
return smEncodings;

0 commit comments

Comments
 (0)