Автор Тема: Изгубени в encoding-а  (Прочетена 2990 пъти)

villimon

  • Напреднали
  • *****
  • Публикации: 65
    • Профил
Изгубени в encoding-а
« -: Dec 01, 2014, 16:59 »
Здравейте,

ще съм ви благодарен ако ми дадете някаква насока защото каквото пробвам стигам до задънена улица.

Първо: Опитвам се да извлека HTML страница.

Второ: Записвам я във файл текстов с разширение .html

Трето: Отварям файла и го парсвам.

По време на третата стъпка текста, който парсвам ми излиза в формат РѕСЃРёРіСѓС да спомена че страниците са на кирилица. Стигнах до няколко наблюдения когато файла е UTF-8 ми се получава така. Когато е ANSI нещата изглеждат нормални.

Възможно ли е когато тегля html страницата тя да се тегли с encoding на файла който се създава. Защото пробвам основно с два сайта и ми излизат двата различни резултата.

Вече всякакви налудничави теории приемам. Но ако някои може да ми обясни как стоят нещата ще съм много благодарен.

може да има такава тема и ще съм благодарен ако ме насочите към нея.
Активен

korea60

  • Напреднали
  • *****
  • Публикации: 189
    • Профил
Re: Изгубени в encoding-а
« Отговор #1 -: Dec 01, 2014, 17:30 »
Нямам идея с какав език правиш цялата процедура? Ако отваряш текста в команд пром енкодинга е cp866, линукски терминал, не би трябвало да има проблем с cp1251 и utf-8.
Общо взето трябва да кажеш как точно парсваш текста, т.е. с какав език, за да ти кажа евентуално как се ползва енкодинг и декодинг.
Активен

villimon

  • Напреднали
  • *****
  • Публикации: 65
    • Профил
Re: Изгубени в encoding-а
« Отговор #2 -: Dec 01, 2014, 17:33 »
Да това щеше да е хубаво да го кажа в началото

всичко се пише на C++
Активен

korea60

  • Напреднали
  • *****
  • Публикации: 189
    • Профил
Re: Изгубени в encoding-а
« Отговор #3 -: Dec 01, 2014, 18:42 »
#include<locale.h>
int main(){
setlocale(LC_ALL, "Bulgarian");
SetConsoleOutputCP(1251)
printf ("%s", Ала бала);
}

Това ползвам за да мога да изкарам текста на български, работи за C, вероятно е подобно на C++, не съм сигурен. Но сигурно проблема е че искаш целият парснат текст да се преведе, без да ги викаш на отделни части, за това не съм сигурен как става, все някои ще пише нещо.
« Последна редакция: Dec 01, 2014, 18:44 от korea60 »
Активен

villimon

  • Напреднали
  • *****
  • Публикации: 65
    • Профил
Re: Изгубени в encoding-а
« Отговор #4 -: Dec 01, 2014, 20:26 »
Пробвах:

setlocale(LC_ALL, "bulgarian");
SetConsoleOutputCP(1251);
std::locale::global(std::locale(""));
AnsiToOem(a, b);

locale mylocal("");
file.imbue(mylocal); // за файла в който записвам

обработването на текста(файла) го правя символ по символ и няма резултат
Активен

remotexx

  • Напреднали
  • *****
  • Публикации: 3243
    • Профил
Re: Изгубени в encoding-а
« Отговор #5 -: Dec 02, 2014, 04:43 »
Това което ти трябва е следната библиотека
libicu52
International Components for Unicode

поне при мен в тестовия дебиян версията е следната
Version: 52.1-6
Size:      28.0 MB

International Components for Unicode
 
ICU is a C++ and C library that provides robust and full-featured
Unicode and locale support.  This package contains the runtime
libraries for ICU.

Така - това е за пълноценна работа, ако ти трябва само валидиране виж тук - простичко е
http://en.wikipedia.org/wiki/UTF-8#Description
Имай предвид че тази кодировка е с променлив брой байтове per code point
от 1 до 6 байта на символ

П.П. но дори и правилно валидиран текст пак може да е пълна безсмислица  (напр. шщюя) та ако ще е професионално обик. се ползва съвместно и с библиотека за разпознаване на езика
libexttextcat
https://packages.debian.org/search?keywords=libexttextcat
« Последна редакция: Dec 02, 2014, 04:52 от remotexx »
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
default encoding in KDE
Настройка на програми
rat 4 2970 Последна публикация Sep 18, 2003, 17:23
от alabal
Кирилица за напреднали (encoding interoperability)
Хардуерни и софтуерни проблеми
RABBIT 6 4505 Последна публикация Jan 05, 2006, 10:47
от RABBIT
Encoding
Живота, вселената и някакви други глупости
luda_glawa 19 7438 Последна публикация Oct 26, 2006, 02:36
от SOMNIVM
Проблем с encoding-а
Настройка на програми
junev 0 1884 Последна публикация Jun 19, 2009, 23:43
от junev
X11 encoding
Настройка на програми
beliconfused 7 2746 Последна публикация Mar 02, 2017, 14:07
от beliconfused