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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2011, 01:26   #11
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А мой пример на дельфи 7. И UTF-8 какое отношение к юникоду имеет?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.10.2011, 01:40   #12
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А мой пример на дельфи 7. И UTF-8 какое отношение к юникоду имеет?
ммм, сори, забываю про заморочку с сменой языка при копировании в дельфю (иногда, когда раскладка языков при копировании и вставке разная - вставляет с неправильной кодировкой)
результат - "???? — ?"
у меня "неправильная" дельфя?

Последний раз редактировалось Pamparam; 14.10.2011 в 02:06.
Pamparam вне форума Ответить с цитированием
Старый 14.10.2011, 05:41   #13
Стелс
Я с вами :-)
Форумчанин
 
Аватар для Стелс
 
Регистрация: 19.10.2008
Сообщений: 110
По умолчанию

попробуйте эту функцию
Код:
//конвертация символов в соответствующие им для правильного отображения в html
function DisableHtmlTags(htmltagsstr:string):string;
var lchs,clch,spactrlr:cardinal; char00,char000,char01,char02,char03,char04,char05,itogstr:string;
begin
 char00:='<BR>'; char000:=''; char01:='&quot;'; char02:='&amp;'; char03:='&lt;'; char04:='&gt;'; char05:='&nbsp; ';
 spactrlr:=0;
 clch:=1;
 lchs:=Length(htmltagsstr);
while clch<=lchs do
 begin
    spactrlr:=spactrlr+1;
    itogstr:=htmltagsstr[clch];
    if htmltagsstr[clch]=Char($0D) then itogstr:=char00;
    if htmltagsstr[clch]=Char($0A) then itogstr:=char000;
    if htmltagsstr[clch]='"' then itogstr:=char01;
    if htmltagsstr[clch]='&' then itogstr:=char02;
    if htmltagsstr[clch]='<' then itogstr:=char03;
    if htmltagsstr[clch]='>' then itogstr:=char04;
    if htmltagsstr[clch]=' ' then begin itogstr:=char05; spactrlr:=0; end;
    if spactrlr>65 then
     begin
      itogstr:=itogstr+'<br>';
      spactrlr:=0;
     end;
    Result:=Result+itogstr;
    clch:=clch+1;
 end;
end;
или вот еще не плохой компонент
Вложения
Тип файла: rar TntUnicodeControls 2.3.0.rar (1.37 Мб, 36 просмотров)
٩(๏̯͡๏)۶٩(๏̯͡๏)۶٩(๏̯͡๏)۶ моя любимая книга - Окна for чайников . Кодить начал ещё вчера . ......кто там кодит ? Да не кто не кодит это я куякнулся

Последний раз редактировалось Стелс; 14.10.2011 в 05:50.
Стелс вне форума Ответить с цитированием
Старый 14.10.2011, 11:12   #14
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Pamparam Посмотреть сообщение
резалт работы тот же, что и при utf8toansi
Судя по скрину у тебя проблемы не в перекодировке, а в отображении.

Там на кнопках программы должен быть русский текст. Обычный русский текст. Никаких перекодировок при отображении кнопок нет. А у тебя там вопросики показываются.

Получается, что у тебя русский просто не показывается. А перекодировка тут ни при чём.

Проверяй что стоит в языке для не-Unicode программ и что в NLS данных в реестре прописано.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 14.10.2011, 14:52   #15
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Судя по скрину у тебя проблемы не в перекодировке, а в отображении.

Там на кнопках программы должен быть русский текст. Обычный русский текст. Никаких перекодировок при отображении кнопок нет. А у тебя там вопросики показываются.
это у меня, вроде, после установки след версий дельфи и их удаления случилось. В проектах все русские названия компонент заменились на вопросики, но если их заново ввести все норм работает.
Вон написано же в мемо
"Кодировка: windows-1251"
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Получается, что у тебя русский просто не показывается. А перекодировка тут ни при чём.
русский, при работе программы отлично выводится в различных компонентах
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Проверяй что стоит в языке для не-Unicode программ и что в NLS данных в реестре прописано.
а подробней? )
Pamparam вне форума Ответить с цитированием
Старый 14.10.2011, 17:06   #16
fucil
Форумчанин
 
Регистрация: 24.02.2010
Сообщений: 148
По умолчанию

Ну не знаю как насчёт всего выше но я делаю вот так и все гуд !
если поможет с тебя + ;-)
Код:
procedure TForm6.Button1Click(Sender: TObject);
var
    MS:TStringStream;
    str:string;
begin
 MS:=TStringStream.Create('');
 idhttp1.Get('http://www.webdelphi.ru/2011/06/obnovlenie-mlang-dobavlena-podderzhka-delphi-4-xe/',MS);
 str :=utf8decode(MS.DataString);
 memo1.Lines.Add(str);
end;
fucil вне форума Ответить с цитированием
Старый 14.10.2011, 18:13   #17
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

я правильно вас понял что вам нужно UTF-8 перевести в нормальный читабельный текст?

я когда-то сталкивался с такой проблемой.
я тогда не стал копаться, искать какие-то компоненты,
проанализировал кодировку и написал свой переводчик.

это было ооочень давно, с тех пор о UTF-8 не вспоминал.
если еще интересно, могу выложить.
xrob вне форума Ответить с цитированием
Старый 14.10.2011, 20:35   #18
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Pamparam Посмотреть сообщение
это у меня, вроде, после установки след версий дельфи и их удаления случилось. В проектах все русские названия компонент заменились на вопросики, но если их заново ввести все норм работает.
Ну это вот как-бы сильно намекает, что проблема не в коде перекодировки. Потому что он рабочий. А проблема в системе.

Цитата:
Сообщение от Pamparam Посмотреть сообщение
а подробней? )
http://www.nullsoft.ru/en/russian.htm

Многие любят делать две вещи:
1. Исправлять данные в реестре, переправляя кодовые страницы одну на другую.
2. Исправлять сами файлы NLS.

Итого, надо:
1. Проверить код на другой машине. С хорошей вероятностью должно работать всё отлично (у других же работает).
2а. Скопировать настройки и файлы с этой машины.
2б. Как вариант - переустановить Windows.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 14.10.2011, 21:13   #19
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Ну это вот как-бы сильно намекает, что проблема не в коде перекодировки. Потому что он рабочий. А проблема в системе.



http://www.nullsoft.ru/en/russian.htm

Многие любят делать две вещи:
1. Исправлять данные в реестре, переправляя кодовые страницы одну на другую.
2. Исправлять сами файлы NLS.

Итого, надо:
1. Проверить код на другой машине. С хорошей вероятностью должно работать всё отлично (у других же работает).
2а. Скопировать настройки и файлы с этой машины.
2б. Как вариант - переустановить Windows.
низкий поклон, помогло! =)
тока счас заметил, но у меня даже время показывалось иероглифами. Codegear, получается, попортило всё!
решение находится по ссылке в предыдущем посте.
Цитата:
Windows XP
If such occurs in the Photoshop the problem is solved so: we find in the register key HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Control \Nls \CodePage and we change value of parameter 1252 on c_1251.nls (was c_1252.nls, begins c_1251.nls). By the way, such manipulation helps sometimes and for some other programs.

If hieroglifs all the same have not disappeared, it is necessary to check up correctness of installation Languadge Options: we start for applet Regional and Languadge Options (it{he} in the Control panel) and we open bookmark Regional Options. In section Standart and formats it is meaningful to expose "russian", in section Location adequate{answering} including for system fonts - it is necessary to specify "Russia". For full happiness it is necessary to check up investment
Advanced: Language for non-Unicode programs should be exposed in "Russian".
в реестре изменил - не помогло, потом: панель управления - язык и региональные стандарты - региональные параметры - русский (был какой-то там французский).
столько дней стоял процесс из-за этого... пасиба! =)
для поиска:
"Вместо русских символов выводятся знаки вопроса. Кодировка"
Pamparam вне форума Ответить с цитированием
Старый 14.10.2011, 21:21   #20
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Codegear, получается, попортило всё!
Крайне маловероятно, что это из-за Delphi.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перекодировать файл в UTF-8->ANSI, ANSI -> UFT-8 Человек_Борща Общие вопросы Delphi 7 19.05.2011 18:47
Ansi коды в Delphi Nikita++ Помощь студентам 2 07.03.2011 23:31
Ansi в UTF-8 и наоборот UTF-8 в Ansi Alar Работа с сетью в Delphi 3 09.12.2010 17:02
перекодировка в dbgride из utf8 в Ansi supalk Общие вопросы Delphi 3 09.06.2010 20:16
спецсимволы utf8 sergsam1 HTML и CSS 25 29.01.2009 16:21