Use iconv to replace non-ascii characters

This commit is contained in:
Jonas Kvinge
2019-07-14 03:08:19 +02:00
parent c9f01f4bc4
commit e7de7ebbfa
4 changed files with 31 additions and 25 deletions

View File

@@ -23,6 +23,7 @@
#include <memory>
#include <stdlib.h>
#include <iconv.h>
#include <QtGlobal>
#include <QApplication>
@@ -795,6 +796,31 @@ QString DesktopEnvironment() {
}
QString UnicodeToAscii(const QString &unicode) {
setlocale(LC_ALL, "");
iconv_t conv = iconv_open("ASCII//TRANSLIT", "UTF-8");
if (conv == (iconv_t) -1) return QString();
QByteArray utf8 = unicode.toUtf8();
size_t input_len = utf8.length() + 1;
char input[input_len];
snprintf(input, input_len, "%s", utf8.constData());
char output[input_len*2];
size_t output_len = sizeof(output);
char *input_ptr = input;
char *output_ptr = output;
iconv(conv, &input_ptr, &input_len, &output_ptr, &output_len);
iconv_close(conv);
return QString(output);
}
#ifdef HAVE_TRANSLATIONS
QString SystemLanguageName() {