|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.05.2011, 07:39 | #1 |
Пользователь
Регистрация: 22.04.2011
Сообщений: 19
|
unicode to ansi
Как перевести текст такого вида \u0410\u0440\u0432\u0440\ в ansi ?
Я конечно могу создать массив с таблицей соответствий \u0410 = А и перебором все перекодировать. Но боюсь люди усомнятся в моей ориентации. |
25.05.2011, 09:50 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
|
25.05.2011, 10:30 | #3 |
Пользователь
Регистрация: 22.04.2011
Сообщений: 19
|
Не помогает что-то, не могу врубиться.
У меня есть обычный текстовый файл, в нем русские буквы закодированы таким образом \u0410\u0440\u0432\u0440\. Я загружаю текст из файла в переменную text: String; Что дальше делать? |
25.05.2011, 10:45 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
берете блок \u0410, далее выделяете число.
его в WideString загоняете(через Chr вродь) и тп. в конце берете String:=WideString поидее должно все норм быть Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
25.05.2011, 14:14 | #5 |
Пользователь
Регистрация: 22.04.2011
Сообщений: 19
|
Delphi syntax:
function Chr(X: Byte): Char; var uni: WideString Так? Но ведь можно только 1 байт. Хотя ошибка не возникает. uni:= chr(0410); String:=uni - выдает какую-то закорючку, должна быть "А". |
25.05.2011, 14:53 | #6 |
Форумчанин
Регистрация: 26.01.2010
Сообщений: 215
|
Код:
Могу лишь пнуть в нужном направлении (ну или как получится)
|
25.05.2011, 17:54 | #7 |
Пользователь
Регистрация: 22.04.2011
Сообщений: 19
|
Супер! Огромное спасибо.
|
25.05.2011, 18:00 | #8 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
я серьезно, а чем плох вариант с массивом?
долго? или принципиально не круто? |
25.05.2011, 20:08 | #9 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
2) гарантированно в вашем массиве не будет хватать символов, которые есть в WideChar - т.е. функция будет работать криво на некоторых кодовых таблицах/символах... 3) вся эта реализация будет (как минимум) не быстрее стандартных средств... 4) это будет напоминать изобретение велосипеда - зачем придумывать то, что уже давно придумано (и реализовано!) 5) подобный стиль программирования называется индусским кодом (он же быдлокод)... Достаточно причин?.. (имхо первых двух более чем достаточно!) p.s. возьмём простой отвлечённый пример. если Вам нужно из строки получить число, которое в ней записано - Вы воспользуетесь функцией VAL (StrToInt...) или реализуете свою процедуру разбора строки и перевода её в число?.. НУ и тоже касается перевода числа в строку... Последний раз редактировалось Serge_Bliznykov; 25.05.2011 в 20:14. |
|
25.05.2011, 21:49 | #10 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
ну вообще, лично для меня было гораздо трудозатратней было найти РАБОТАЮЩУЮ функцию для перевода UTF-8 в Ansi
и я написал быдлокод, как раз с использованием массива =) "не быстрее стандартных средств", с этим согласен, но code := '$' + copy(code,3,4); result := widechar(strtoint(code)); что же в итоге делает уже придуманный велосипед? по сути тоже самое. разве что в функцию уже передается готовый индекс, по которому она возвращает символ из массива (а если не так, то как тогда?), но индекс этот мы все-равно готовим вручную ( code := '$' + copy(code,3,4); ) "если Вам нужно из строки получить число, которое в ней записано - Вы воспользуетесь функцией VAL (StrToInt...) или реализуете свою процедуру разбора строки и перевода её в число?" если предположить что я просто не знаю о существовании StrToInt, то да, реализую свою процедуру перевода строки =)) как это было например с UTF-8 а в общем я с вами согласен, если знаешь необходимые готовые функции и они корректно работают - зачем создавать новые? но на практике всегда ли так бывает? просто ТС так грубо отозвался о варианте с массивами, что мне очень захотелось переспросить, что в этом ужасного?... теперь понял, спасибо... |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перекодировать файл в UTF-8->ANSI, ANSI -> UFT-8 | Человек_Борща | Общие вопросы Delphi | 7 | 19.05.2011 18:47 |
Ansi в UTF-8 и наоборот UTF-8 в Ansi | Alar | Работа с сетью в Delphi | 3 | 09.12.2010 17:02 |
ANSI C ... | eva.t | Помощь студентам | 11 | 11.02.2010 23:20 |
Конвертировать строку из ANSI в UNICODE | Миша | Общие вопросы Delphi | 8 | 28.12.2009 18:23 |
ANSI | HunterMan | Win Api | 2 | 18.04.2008 23:17 |