|
3 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 351
|
|
Работа с кодировками файла (АНСИ и ЮТФ-8)17.12.2013, 17:56. Показов 35634. Ответов 41
Метки нет (Все метки)
Всем здрасти!
Подскажите пожалуйста, каким образом можно реализовать следующее: 1) Как программно преобразовать текст из ANSI в UTF-8, и наоборот из UTF-8 в ANSI? 2) Как для создаваемого файла установить кодировку UTF-8? ANSI? 3) Как, при открытии файла, можно определить его кодировку, чтобы если она не ANSI, преобразовать её в таковую?
0
|
|
| 17.12.2013, 17:56 | |
|
Ответы с готовыми решениями:
41
Работа с кодировками Работа с кодировками при чтении файла Построчное чтение файла с разными кодировками (2 мя) |
| 21.12.2013, 14:05 | |
|
0
|
|
|
3 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 351
|
|||||||
| 21.12.2013, 14:58 [ТС] | |||||||
|
На данный момент у меня к форумчанам 2 просьбы: 1) Может кто-нибудь напишет код, как в контейнер string можно вытянуть данные в формате ANSI (русские символы интересуют в том числе) из файла с кодировкой UTF-8, прикрепленного к этому сообщению (Text.txt) 2) Почему не записывается в поток информация в следующем примере:
0
|
|||||||
|
3 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 351
|
|
| 21.12.2013, 15:02 [ТС] | |
|
Кстати, вот вложение
0
|
|
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
| 21.12.2013, 15:19 | ||||||
|
Если проект юникодный, то все должно быть юникодным. Кодировку советую UTF-8, все работы производить с std::wstring, std::wifstream, std::wofstream.
Да и еще:
В свое время я много часов потратил, чтобы понять, что поганая студия не может записать в файл "как есть", а где-то глубоко в недрах вызывает WideCharToMultiByte. Есть еще вариант извращенный, если С++11 нет возможности использовать: открывать файл через fopen с флагом ccs=UTF-8 и далее передавать указатель на файловую переменную в поток. http://msdn.microsoft.com/en-u... y3zcb.aspx И последний вариант: iconv
0
|
||||||
|
|
||
| 21.12.2013, 15:34 | ||
|
На всякий случай немного теории Сложности понимания работы utf-8 и ascii Та часть преобразования, которая описана в имени как "MultiByte" - условно говоря это конкретный тип кодировки (Win1251, koi8, UTF8, UTF16 и т.п.). Та часть, которая описана в имени как "WideChar" - это есть wchar_t, или unicode (универсальное представление для хранения текстов, абстрагированное от какой-либо конкретной кодировки, обычно являющееся 4-байтным типом). Т.е. если ты хочешь преобразовать из ANSI в UTF8, то ты делаешь через два преобразования: ANSI -> WideChar, а потом WideChar -> UTF8 Alex5 в посте #18 пытался донести до тебя эту мысль. MultiByteToWideChar - преобразование из кодировки, которая задаётся параметром в WideChar (unicode) WideCharToMultiByte - преобразование из WideChar (unicode) в кодировку, которая задаётся параметром Т.е. преобразование между любыми двумя кодировками всегда делается через промежуточное преобразование в WideChar (которое, в свою очередь, НЕ является кодировкой, а является ПРЕДСТАВЛЕНИЕМ данных)
0
|
||
|
|
|
| 21.12.2013, 15:52 | |
|
Вероятно стоило изначально задать вопросы ТС:
1. В какой кодировке 1-я программа получает значения с сайта? В обще что сайт и что делает программа №1. ? 2. Что за таинственная программа №2? 3. Какую среду разработки использует ТС? А то так далеко можно пойти ...
0
|
|
|
3 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 351
|
||||
| 21.12.2013, 19:23 [ТС] | ||||
|
0
|
||||
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 21.12.2013, 19:44 | |
|
0
|
|
|
3 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 351
|
|||||||||
| 21.12.2013, 20:06 [ТС] | |||||||||
|
Создается файл через ofstream и записываются в него данные через cURL. После данные (распарсенные/русский язык) сохраняются в файл. И этот файл читают в будущем другие программы, но они этого сделать не могут, так как файл сохраняется (почему-то) в кодировке UTF-8... Вот... Добавлено через 56 секунд Добавлено через 9 минут
0
|
|||||||||
|
Ушел с форума
|
||
| 21.12.2013, 20:57 | ||
|
считайте его содержимое в буфер, затем выполните MultiByteToWideChar(CP_UTF8, ...), затем WideCharToMultiByte(CP_ACP, ...), - или, что еще лучше, с указанием точной выходной кодировки, например 1251, если Вы ее знаете, - а затем сохраните обратно. Правда, у юникода значительно больший диапазон, чем у ANSI-кодировок, поэтому не удивляйтесь, если некоторые исходные символы будут потеряны. Кстати, есть и другой, концептуально более правильный, способ - попросить сервер сразу отдавать данные в нужной кодировке. Например, в HTTP для этого есть заголовок "Accept-charset".
1
|
||
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 21.12.2013, 21:03 | ||
|
Кодировка страницы исходника какая? Выберите в студии дополнительные параметры сохранения и далее UTF-8 (там по умолчанию ANSI идет)
0
|
||
|
Ушел с форума
|
||
| 21.12.2013, 21:44 | ||
|
В RFC 2616 (HTTP/1.1) сказано, что если сервер не может отдать контент в запрашиваемой через accept-charset кодировке, ему следует вернуть код 406. Хотя и отдать ответ в другой кодировке не возбраняется.
1
|
||
|
|
||
| 21.12.2013, 22:07 | ||
|
C https://www.google.com.ua та же штука...
Я по крайней мере не разу не видел что бы серв менял кодировку. Добавлено через 4 минуты Документацию тех программ смотрел ? Какой тип контента и с какого конкретно сайта скачивается ?
0
|
||
|
|
||
| 22.12.2013, 01:33 | ||
|
1
|
||
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
| 22.12.2013, 01:48 | |
|
http://local.joelonsoftware.co... 0%BE%D0%B2
Хорошую статью стоит прочитать интересующимся. Многие вопросы отпадут и может кого-то осенит в решении проблемы. (сам не вникал во все посты)
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||
| 22.12.2013, 01:52 | |||
|
0
|
|||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 22.12.2013, 01:59 | |
|
0
|
|
| 22.12.2013, 01:59 | |
|
проблема с кодировками при вставке содержимого файла Код анси Socket коректно принять кириллицу в Ютф-8 Вывод в браузер сгенерированных изображений при кодировке скрипта ютф-8 Как поменять кодировку в файле на ютф-8 если в редакторе уже стоит такая Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|