2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
1 | |
Unicode, UTF-8 и ANSI в одном консольном приложении. Можно ли "на лету" конвертировать массив строк?26.11.2012, 13:43. Показов 6748. Ответов 15
Метки нет (Все метки)
Всем доброго дня)
Подскажите такую весчь: можно ли в консольном приложении работать с несколькими кодировками? Нужно считать файлик в кодировке UTF-8 (в массив строк), далее конвертировать его в ANSI (чтобы проще было парсить текст) и измененный текст в кодировке UNICODE записать в другой файл. Именно в обычном консольном С++ приложении, не С++/CLI и т.д. Можно ли (и сложно ли) реализовать такую конвертацию из кодировки в кодировку "на лету"?
0
|
26.11.2012, 13:43 | |
Ответы с готовыми решениями:
15
Кодировка Unicode, UTF-8, ANSI Как конвертировать Unicode в Ansi? Конвертировать Utf 16 в Ansi Как достигается совместимость кодировки utf-8 с ANSI и Unicode? |
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.11.2012, 14:03 [ТС] | 3 |
Допустим, есть текстовый файлик в кодировке utf-8. Можно примерчик, как считать из него (той же getline) строку и конвертировать, скажем, в ANSI?
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.11.2012, 14:17 [ТС] | 5 |
ANSI 1251. И все-таки, что значит "не сложно"? Например, вот я считал строку в формате utf8 в string.
fstream infile ("utf8.txt", ios_base::in); string str; while (infile.good()) // while input good and not at EOF {infile.getline (str, '\n'); ... Как эту строку преобразовать в тот же ANSI 1251? В UNICODE?
0
|
26.11.2012, 14:24 | 6 | |||||
Вот преобразование utf-8 в utf-32:
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
26.11.2012, 14:41 | 7 |
Excogit8er, boost::locale. http://www.boost.org/doc/libs/... index.html
1
|
26.11.2012, 14:55 | 8 |
Excogit8er, можно влом пойти: не использовать никаких массивов байт и чего-то подобного, а создать пару массивов, в одном будут храниться ascii коды символов, а в другом сами символы. Т.е все это в пределах одной кодировки: списать таблицу какой-нибудь кодировки в массивы. Но это долго и муторно.
0
|
256 / 46 / 4
Регистрация: 24.11.2012
Сообщений: 466
|
|
26.11.2012, 15:10 | 9 |
0
|
Заблокирован
|
|
26.11.2012, 15:55 | 11 |
Excogit8er, MultyByteToWindeChar в помощь тут есть код для копипаста
Создание файла в UTF-8 кодировке
1
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.11.2012, 19:00 [ТС] | 12 |
Спасибо, похоже что мощная штука и как раз для подобных задач. Почитаю примеры)
Добавлено через 2 минуты Хехе, ну нет, это по ходу путь настоящего джедая, я пока что к подобным экзерсисам не готов )) Мне бы что-нить потривиальней, типа там вызвал функцию и конвертировал. Добавлено через 3 минуты О! А вот это вот то, что доктор прописал, именно что нужно - красивое решение задачи. Спасибо. Сорри за ламерский вопрос, но ИЗ utf-8 в chcp 1251 этой же функцией можно сконвертировать? Потому что в примере наоборот - 1251 в utf-8.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
26.11.2012, 19:18 | 13 | |||||
1
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|
26.11.2012, 19:34 [ТС] | 14 |
Красиво, что сказать. Thanx! Причем все просто и ясно, кроме одного момента:
wcout.imbue(locale("rus_rus.866")); //включаем другую кодировку. А для чего нужна это строка? Ну, т.е. понятно, что включаем другую кодировку, но почему не сразу эту: setlocale(0, ".1251"); // вернули кодировку. И ещё: MultiByteToWideChar работает в консольных приложениях без проблем? Я видел её упоминание уже, но думал, что это только для "оконных" вариантов.
0
|
2 / 2 / 1
Регистрация: 23.10.2012
Сообщений: 66
|
|||||||||||
26.11.2012, 20:03 [ТС] | 16 | ||||||||||
Да, я хотел отредактировать, но прошло больше 5 минут. Собственно, вопрос про вот этот фрагмент кода:
0
|
26.11.2012, 20:03 | |
26.11.2012, 20:03 | |
Помогаю со студенческими работами здесь
16
Есть ли функция PHP для преобразования ANSI в UTF-8 или Unicode и наоборот? Работа с UTF-8 в консольном приложении C++ Конвертировать CSV ANSI в CSV UTF-8 или шо делать Конвертировать ANSI строку в UTF-8 строку Qt клиент и сервер в одном консольном приложении в разных потоках Кодирование строк unicode в байты utf-8 Перезапись строк в консольном приложении Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |