2015-03-15 2 views
0

Есть ли способ обнаружить кодировку std::string?std :: string с различным кодированием в QString

Моя проблема: у меня есть внешние веб-службы, которые предоставляют данные в разных кодировках. Также у меня есть библиотека, которая анализирует эти данные и сохраняет их в std :: string. Чем я хочу отображать данные в Qt GUI. Проблема в том, что std :: string может иметь разные кодировки. Некоторая строка может быть преобразована с использованием QString::fromAscii(), некоторые QString::fromUtf8().

ответ

0

Я не изучал его, но в прошлом использовал некоторый Qt3.3.

ASCII vs Unicode + UTF-8

UTF8 является 8-битным, ASCII 7 бит. Я думаю, вы можете попытаться взглянуть в значения массива строк

http://doc.qt.digia.com/3.3/qstring.html#ascii и http://doc.qt.digia.com/3.3/qstring.html#utf8 кажется ASCII возвращает 8-битный ASCII представление строки, все-таки я думаю, что это должно иметь значения от 0 до 127 или что-то подобное , вы должны сравнить больше символов в строке.

+0

'void print_values ​​(const char * in_string) { \t printf (" {"); \t для (INT I = 0; in_string [I] = 0;! Я ++) { \t \t \t Е ("% d", in_string [I]); \t \t if (in_string [i + 1]! = 0) \t \t \t printf (","); \t} \t printf ("} \ n"); } int main (int argc, char ** argv) { \t QString test ("iNyuu"); \t const char * ascii = test.ascii(); \t const char * utf8 = test.utf8(); \t printf ("ascii ="); print_values ​​(ASCII); \t printf ("utf8 ="); print_values ​​(utf8); \t возвращение 0; } // Не знаю, я вижу «QCString utf8() const» (utf не возвращает массив символов здесь и не уверен для Qt4 // вы использовали «operator std :: string() const»? // попробуйте схожий материал с std :: string – iNyuu