Здравствуйте, гость ( Вход | Регистрация )
kwisp | Дата 27.2.2010, 11:38 |
смотри еще enca enconv по ссылке сообщение на этом форуме и iconv это простенькие утилиты под линукс. я ими пользуюсь:) П.С. По-моему, прога твоя будет полезна чисто в образовательных целях. Практически уже эта проблема решена. Но ты запал не теряй. |
|
Litkevich Yuriy | Дата 27.2.2010, 4:41 |
Rocky, посмотри ещё программу Notepad++, она определяет кодировку самостоятельно (иногда ошибается, когда всё на аглицком написано) | |
Rocky | Дата 26.2.2010, 23:33 |
ок, попробуем разобраться) спасибо | |
SABROG | Дата 26.2.2010, 23:02 |
Наткнулся на такую библиотеку определения кодировки. Написана на Си, алгоритм содран с детектора Мозиллы, лицензия LGPL. | |
Rocky | Дата 26.2.2010, 21:59 |
Мдя... а я думал за пару часиков напишу все ) Видимо придется повозиться, если запал не пройдет ) | |
SABROG | Дата 26.2.2010, 21:30 |
не позволяет определить автоматически кодировку Qt умеет определять только UTF16/32 по BOM'у. Так что на него не полагайся. Твоя задача сводится к реализации своего варианта программы "Штирлиц", но даже она ошибается. Поэтому проси пользователя, чтобы жестко задавал исходную и желаемую кодировки, если автоматически определить не удалось. Думаю в интернете должны быть статьи как по частотному анализу букв определить кодировку файла. В разных языках частота встречаемости тоже разная Может быть даже готовые библиотеки есть какие-нибудь. Простой алгоритм заключает в том, чтобы последовательно предполагать кодировки файлов и пытаться конвертировать другую, затем подсчитывать встречаемость букв. Но этот алгоритм будет работать только на более менее больших файлах, где русский и английский текст не миксуются 50/50. |
|
Rocky | Дата 26.2.2010, 20:21 |
Т.е. нужно сначала определить исходную кодировку,затем написать так
Т.е. установить "потоку исходного файла" нужную кодировку и затем уже его считывать и перекодировать в заданной, так? А я почему-то решил что когда делаеш так QTextStream oInStream(&oSourceFile); - oInStream уже в нужной кодировке (в кодировке файла oSourceFile)... Значит пошел разбираться как определять исходную кодировку... Где-то тут вроде уже речь шла про это, остановились вроде как на notepad++. Вобщем, поищу его исходники. Наверное так. UPD дак ведь есть уже: %QTDIR%\examples\tools\codecs можешь на его основе сделать, заодно и посмотришь как это делается. О, спасибо ) UPD оказывается %QTDIR%\examples\tools\codecs не позволяет определить автоматически кодировку ( |
|
Litkevich Yuriy | Дата 26.2.2010, 20:05 |
Я хочу сделать бесплатный =) перекодировщик файлов. дак ведь есть уже:%QTDIR%\examples\tools\codecs можешь на его основе сделать, заодно и посмотришь как это делается. |
|
BRE | Дата 26.2.2010, 20:04 |
Он ведь не должен- меняться если он уже в этой кодировке? Или нет? или я туплю ( Как-же не должен, именно должен меняться. Если ты ошибешься с исходной кодировкой, ты всегда будешь видеть кашу. А сейчас ты именно ошибаешься, файл в кодировке UTF-8 а ты его читаешь как win1251. |
|
Rocky | Дата 26.2.2010, 19:52 |
Сорри, в конце недели туго с речью) Есть файл in.txt в кодировке win1251. Я его конвертирую в utf-8 и сохраняю в out.txt. Потом in.txt удаляю, out.txt копирую с новым именем (in.txt), потом out.txt удаляю - т.е. как бы меняю имя файла.
В итоге новый in.txt в кодировке utf-8. Затем беру этот новый in.txt и снова его конвертирую в туже utf-8.... Он ведь не должен меняться если он уже в этой кодировке? Или нет? или я туплю ( |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.4.2024, 19:15 |