Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2014, 19:29   #1
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию Проблема с кодировкой сохранённого файла

Здравствуйте, ситуация такая:

На сервер был скачен текстовый файл с русским текстом, на сервере нет русского языка, и файл сохранился с текстом типа "Õîòèòå ïîõóäåòü", когда я скачал файл на мой комп, все символы такими и остались.

Вопрос: Как из этого файла получить снова русский текст? Работа с файлам будет выполняться программно, спасибо

Utf8ToAnsi не работает
уже и всё из HtmlCPConvert перепробовал, и все примеры в гугле которе нашел.

Я совсем не понимаю что требуется сделать чтобы вернуть в русский текст? Это же обычная windows1251, почему она так отображается?

а вот так текст в винхексе выглядит
Код:
Õîòèòå ïîõóäåòü
Нашел статью, http://habrahabr.ru/post/137061/
сделал как там сказано
Код:
  str:=Utf8ToAnsi(str);
  str:=AnsiToUtf8(str);
Не спасло абсолютно!

Код:
str:=Utf8ToAnsi(str);
Даёт результат
Цитата:
Oioeoa iiooaaou


Вообщем уже всё перепробовал, но не могу "Õîòèòå ïîõóäåòü" или "Õîòèòå ïîõóäåòü" (Первое в блокноте, второе в винхексе отображается, один и тот же файл) вернуть в русский текст, как быть?
lollollollol вне форума Ответить с цитированием
Старый 17.01.2014, 19:30   #2
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Тут поломалась кодировка, есть копия топика тут:
http://forum.vingrad.ru/forum/topic-...2596505/0.html
lollollollol вне форума Ответить с цитированием
Старый 17.01.2014, 19:55   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Хотите похудеть
это IS0-8859-15

Определяется в онлайн определителе кодировки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.01.2014 в 20:01.
Аватар вне форума Ответить с цитированием
Старый 17.01.2014, 20:08   #4
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,777
По умолчанию

Сохранил строку с кодами в теле HTML-файла, открыл браузером, увидел:
Цитата:
Őîňčňĺ ďîőóäĺňü
Выделил, скопировал, создал новый файл в Far (Shift+F4), выбрал кодировку Windows-1250, вставил, сохранил. При повторном просмотре Far сам увидел, что это 1251, и показал русский текст.

Текст в цитате форум корежит.
Vapaamies на форуме Ответить с цитированием
Старый 17.01.2014, 20:54   #5
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Цитата:
это IS0-8859-15
Как программно вернуть в русский текст?
Какая функция или какой алгоритм?
lollollollol вне форума Ответить с цитированием
Старый 17.01.2014, 22:08   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно так Д7
Код:
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2: String;
    i: Integer;
begin
  s1:='Õîòèòå ïîõóäåòü';
  s2:='';
  i:=1;
  while i<=Length(s1) do begin
    if s1[i]='&' then begin s2:=s2+Chr(StrToInt(Copy(s1,i+2,3))); Inc(i,5); end
                 else s2:=s2+s1[i];
    Inc(i,1);
  end;
  Label1.Caption:=s2;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.01.2014, 22:53   #7
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

Форум кодировку ломает, вот так выглядит она:
Изображения
Тип файла: jpg Untitled-1.jpg (16.7 Кб, 83 просмотров)
lollollollol вне форума Ответить с цитированием
Старый 18.01.2014, 01:03   #8
tred
чайник
Пользователь
 
Аватар для tred
 
Регистрация: 24.06.2010
Сообщений: 44
По умолчанию

попробуй в архив скидывать потом на сервер заливать
tred вне форума Ответить с цитированием
Старый 18.01.2014, 01:32   #9
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

так и было, сервер скачивал zip архив, сам распаковывал его с помощью 7z.dll и файлы сохранились в таком виде
lollollollol вне форума Ответить с цитированием
Старый 19.01.2014, 01:28   #10
lollollollol
Форумчанин
 
Регистрация: 23.03.2013
Сообщений: 218
По умолчанию

решение

Код:
function StringToWideStringEx(const S: AnsiString; CodePage: Word): WideString;
var
  InputLength,
  OutputLength: integer;
begin
  InputLength := Length(S);
  OutputLength := MultiByteToWideChar(CodePage, 0, PAnsiChar(S), InputLength, nil, 0);
  SetLength(Result, OutputLength);
  MultiByteToWideChar(CodePage, 0, PAnsiChar(S), InputLength, PWideChar(Result), OutputLength);
end;

function WideStringToStringEx(const WS: WideString; CodePage: Word): AnsiString;
var
  InputLength,
  OutputLength: integer;
begin
  InputLength := Length(WS);
  OutputLength := WideCharToMultiByte(CodePage, 0, PWideChar(WS), InputLength, nil, 0, nil, nil);
  SetLength(Result, OutputLength);
  WideCharToMultiByte(CodePage, 0, PWideChar(WS), InputLength, PAnsiChar(Result), OutputLength, nil, nil);
end;

function TranslateString(const S: AnsiString; CP1, CP2: Word): AnsiString;
begin
  Result:= WideStringToStringEx(StringToWideStringEx(S, CP1), CP2);
end;
Используем так:
Код:
str:=TranslateString(str,65001,28591);
lollollollol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодировкой при отображении RTF файла в JTextPane BleStaR Общие вопросы по Java, Java SE, Kotlin 0 26.09.2013 12:13
Проблема с кодировкой 622089 PHP 1 08.03.2012 22:46
Проблема с кодировкой nolz Microsoft Office Word 1 07.01.2012 22:20
Проблема с кодировкой файла расширения .BAS TheDer Помощь студентам 3 21.04.2011 10:22
Ошибка чтения сохранённого файла(картинки) alex77755 Microsoft Office Excel 10 28.10.2010 14:46