diff --git a/src/libs/utils/textcodec.cpp b/src/libs/utils/textcodec.cpp index 69da7bf8c54..ab3e37cb6ac 100644 --- a/src/libs/utils/textcodec.cpp +++ b/src/libs/utils/textcodec.cpp @@ -9,6 +9,19 @@ namespace Utils { +// TextEncoding + +TextEncoding::TextEncoding(const QByteArray &name) + : m_name(name) +{} + +TextEncoding::TextEncoding(QStringConverter::Encoding encoding) + : m_name(QStringConverter::nameForEncoding(encoding)) +{} + + +// TextCodec + TextCodec::TextCodec() = default; TextCodec::TextCodec(QTextCodec *codec) @@ -106,9 +119,17 @@ TextCodec TextCodec::latin1() return theLatin1Codec; } +static TextEncoding theEncodingForLocale = TextEncoding(QStringEncoder::System); + void TextCodec::setCodecForLocale(const QByteArray &codecName) { QTextCodec::setCodecForLocale(QTextCodec::codecForName(codecName)); + theEncodingForLocale = codecName; +} + +TextEncoding TextCodec::encodingForLocale() +{ + return theEncodingForLocale; } QByteArray TextCodec::fromUnicode(QStringView data) const diff --git a/src/libs/utils/textcodec.h b/src/libs/utils/textcodec.h index 67de0d7108f..cc11712a161 100644 --- a/src/libs/utils/textcodec.h +++ b/src/libs/utils/textcodec.h @@ -14,6 +14,19 @@ QT_END_NAMESPACE namespace Utils { +class QTCREATOR_UTILS_EXPORT TextEncoding +{ +public: + TextEncoding(const QByteArray &name); + TextEncoding(QStringEncoder::Encoding encoding); + + operator QByteArray() const { return m_name; } + QByteArray name() const { return m_name; } + +private: + QByteArray m_name; +}; + class QTCREATOR_UTILS_EXPORT TextCodec final { public: @@ -52,6 +65,7 @@ public: static TextCodec latin1(); static void setCodecForLocale(const QByteArray &codecName); + static TextEncoding encodingForLocale(); private: explicit TextCodec(QTextCodec *codec);