#include "wstring_qt.hh" #include namespace gd { QString toQString( wstring const & in ) { #ifdef __WIN32 return QString::fromUcs4( in.c_str() ); #else return QString::fromStdWString(in); #endif } wstring toWString( QString const & in ) { QVector< unsigned int > v = in.toUcs4(); // Fix for QString instance which contains non-BMP characters // Qt will created unexpected null characters may confuse btree indexer. // Related: https://bugreports.qt-project.org/browse/QTBUG-25536 int n = v.size(); while ( n > 0 && v[ n - 1 ] == 0 ) n--; if ( n != v.size() ) v.resize( n ); return wstring( ( const wchar * ) v.constData(), v.size() ); } wstring normalize( const wstring & str ) { return gd::toWString( gd::toQString( str ).normalized( QString::NormalizationForm_C ) ); } }