Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 73

Кракозябра с кодировкой

05.06.2017, 03:47. Показов 4575. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ! помогите пожалуйста разобраться с кодировкой =(

читаю из буфера строку PChar(P)

Delphi
1
2
3
    Buffer:=UnicodeString(PChar(P));
    Form1.Memo1.Lines.Add(Buffer);
    Form1.Memo1.Lines.Add('***');
в Memo выходит кракозябра =(


вместо UnicodeString пробовал ещё Utf8ToAnsi / AnsiToUtf8 / ansiString / utf8String / UTF8Decode / UTF8Encode
ничего не помогает =(

причём если сохранить кракозябру через notepad в unicode и потом открыть как обычный текст через F3 то всё читается:


что ещё можно попробовать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.06.2017, 03:47
Ответы с готовыми решениями:

С кодировкой базы данных и кодировкой сайтом и кодировкой файла разобраться не могу
С кодировкой базы данных и сайтом файлом разобраться не могу. Я на своем сайте вывожу данные из другой mysql.... МММ сайт на win 1251 а...

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

Именнованые каналы и кракозябра
Здравствуйте, есть задание написать запись и чтение для именновоного канала(FIFO) вроде бы ничего сложного... вот мой код: запись ...

12
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 73
05.06.2017, 04:55  [ТС]
есть ещё UnicodeToUtf8 и Utf8ToUnicode но никто не знает как ими пользоваться =(
нет ни одного рабочего примера весь гугл перерыл =(
0
 Аватар для Zombi_sib
379 / 332 / 89
Регистрация: 26.05.2010
Сообщений: 750
05.06.2017, 06:52
Проект выложи и файл с данными откуда что читаешь, а так только гадать можно, у тебя изначальная кодировка какая, хочешь загрузить в мемо файл?
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
05.06.2017, 07:35
судя по картинке, вообще никаких UnicodeToUnicode не требуется, т.к. у вас и так unicode delphi
0
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 73
05.06.2017, 15:02  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
судя по картинке, вообще никаких UnicodeToUnicode не требуется, т.к. у вас и так unicode delphi
нет если просто PChar(P) выводить, то тоже самое, там японская килиберда.

Добавлено через 1 минуту
Цитата Сообщение от Zombi_sib Посмотреть сообщение
Проект выложи и файл с данными откуда что читаешь, а так только гадать можно, у тебя изначальная кодировка какая, хочешь загрузить в мемо файл?
кодировка может быть разная. мне главное понять какая тут. в проекте ничего интересно нету. там не указана кодировка
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
05.06.2017, 15:48
понять какая кодировка в исходном файле ну очень несложно.
загрузите его в Notepad++ или в far'е в редакторе откройте
а в memo.lines.loadFromFile()
есть в том числе параметр Encoding
http://docwiki.embarcadero.com... adFromFile
экспериментируйте
0
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 73
05.06.2017, 17:38  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
а в memo.lines.loadFromFile()
есть в том числе параметр Encoding
если сохраняю это в файл а потом открываю его вот так
form1.Memo1.Lines.LoadFromFile('test.dat ',TEncoding.ANSI);
то всё открывается ...

но почему тогда сразу вот так не открывает
Buffer:=AnsiString(PChar(P));

как-то глупо сохранять строку в файл чтоб открыть её =(

Добавлено через 7 минут
тоесть вот так всё работает
Delphi
1
2
3
4
5
6
         buffer:=pchar(P);
 
          form1.Memo1.Lines.Add(buffer);
          form1.Memo1.Lines.SaveToFile('test',TEncoding.Unicode);
          form1.Memo1.Lines.LoadFromFile('test',TEncoding.ANSI); //TEncoding.GetEncoding(CP_ACP);
          Form1.Memo1.Lines.Add('***');
то всё открывается ...

но почему тогда сразу не открывает?
Buffer:=AnsiString(PChar(P));
0
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
05.06.2017, 18:09
Надо весь код. А то многое непонятно, например вот чего такое это загадочное P? Какого типа? Как и откуда туда попадают данные?
0
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 73
05.06.2017, 18:15  [ТС]
Цитата Сообщение от GoodWeather Посмотреть сообщение
вот чего такое это загадочное P? Какого типа? Как и откуда туда попадают данные?
вам это ничего не даст только запутаетесть

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 MS:=TMemoryStream.Create;
 
  if OpenClipboard(0) then
  begin
 
    CBFList:=TList.Create;
    CBF:=0;
    repeat
    CBF:=EnumClipboardFormats(CBF);
    if CBF<>0 then CBFList.Add(Pointer(CBF));
    until CBF=0;
 
    if CBFList.Count>0 then
    begin
    Temp:=CBFList.Count;
    MS.Write(Temp,SizeOf(Integer));
 
      for I:=0 to CBFList.Count-1 do
      begin
      H:=GetClipboardData(Cardinal(CBFList[I]));
 
        if H>0 then
        begin
          CBBlockLength:=GlobalSize(H);
          if H>0 then
          begin
            P:=GlobalLock(H);
Добавлено через 3 минуты
Delphi
1
2
3
4
5
6
7
8
var
  H: THandle;
  P: Pointer;
  I: Integer;
  CBFList: TList;
  BufferData,CBF,CBBlockLength,Temp: Cardinal;
  Buffer: String;
  MS: TMemoryStream;
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
05.06.2017, 18:28
если у вас строка AnsiString то логично что на нее должен указывать PAnsiChar ?
тогда, т.к. присваивания между ссылками на строку и строками работают, то
для версий делфи >= 2009
Delphi
1
2
3
4
var s:AnsiString;buffer:string;
...
s:=pansichar(p);
buffer:=s;
строка 13 по-моему должно бы быть так:
Delphi
1
2
3
4
Temp:=CBFList.Count;
if Temp>0 then
begin
    MS.Write(Temp,SizeOf(Temp));
далее ваш алгоритм работы с Clipboard очень странный
вы вполне можете не считывать все доступные варианты, а попросить те, которые вам предпочтительны
самое простое
Delphi
1
2
3
Uses Clipbrd
 
memo.lines.text := Clipboard.AsText;
зачем вообще весь этот огород и локи перелоки?
1
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 73
06.06.2017, 02:16  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
на нее должен указывать PAnsiChar
вот это Точно! сработало =) СПАСИБО! =)

Цитата Сообщение от krapotkin Посмотреть сообщение
зачем вообще весь этот огород и локи перелоки?
Уважаемый господин Крапоткин Вы абсолютно правы) но именно в моём случае это необходимо...
дело в том что этот код сохраняет всё содержимое Буфера Обмена в специальный файл.

(далее идёт обработка и обратная загрузка в буфер обмена)

А нужно это для того чтоб не страдал текст с разметкой... то есть если у нас например скопирован текст такого вида:


чтоб сохранялся размер текста.. цвет.. итд
форматы при этом могут быть абсолютно разные... и при этом нужно вносить изменения в тексте.
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
06.06.2017, 06:56
вы все форматы по очереди в файл складываете?
0
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 73
06.06.2017, 13:45  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
вы все форматы по очереди в файл складываете?
Ну вроде как да... потом ищу определённый текст.. исправляю.. загружаю это опять в буфер и там уже должен оказаться исправленный текст с сохранением всех пропорций и разметки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2017, 13:45
Помогаю со студенческими работами здесь

Кракозябра а не нормальный текст
Я не могу понять почему у меня кракозябра а не нормальный текст отображается в заголовке столбцов код index.html &lt;html&gt; ...

IdMessage Кодировка-кракозябра
Вопрос избит, но! Ни одно из найденных мной решений не действует. Суть: Есть почтовый клиент, шлет письмо с мыла Х на мыло Y. (оба...

кракозябра (Delphi XE2)
приветствую. есть сайт, на нем кодировка windows-1251. парсю его название и в программу мне вылазиет кракозябра НО это в delphi XE2....

Sqlite3 вместо данных из таблицы кракозябра)
Вместо данных из таблицы получаю вот такую: ќ±'иЎv кракозябру) что делать?

Кодировка базы Access , отображение русских букв - кракозябра
Всем привет. Наткнулся на следующую проблему: пишу программу на С++ Qt для работы с базой данных Access. Подключаюсь нормально. но все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru