|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.02.2011, 12:15 | #1 |
Регистрация: 01.02.2011
Сообщений: 6
|
Китайский в Delphi
Здравствуйте! Есть проблема, текстовый файл формата txt, в нём записан текст, часть которого на китайском, считываю его построчно пока не закончится в строковую переменную s, в этом же цикле, в зависимости от условий изменяю строку s и записываю в другой файл. Как сделать так, чтобы Delphi воспринимал китайский текст? Мало того, что при считывании в строковую переменную текст на китайском превращается в бред, так еще и в самом исходном файле, после того, как с него считала программа текст становится бредом.
|
01.02.2011, 12:45 | #2 | ||
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Цитата:
Цитата:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
||
01.02.2011, 13:19 | #3 |
Регистрация: 01.02.2011
Сообщений: 6
|
|
01.02.2011, 13:34 | #4 | |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Цитата:
Код:
Код:
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
|
01.02.2011, 13:37 | #5 | |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Читать как поток байт, другое дело, как потом с этой строкой работать.
Можно перевести её в wide/unicodesting через Utf8ToUnicode() или через UTF8ToString(), если у вас Дельфи посвежее. И работать как с обычной юникодной строкой. Перед записью можно опять в UTF8 завернуть. Цитата:
Опять же, точно надо узнать, что там внутри файла. Если начинается с $EF $BB $BF, то это UTF8. Если с $FF, $FE, то UTF16 (little endian) а если $FE, $FF, то UTF16 (big endian). Это если руками. А если Дельфи 2009 или свежее, там стринглист вроде сам должен разобраться что к чему, но на 100% я не уверен.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
|
01.02.2011, 13:48 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
veniside, +1
тут у нас на форуме есть гуру Delphi - GunSmoker. В частности, он является Большим докой в кодировках... и вот, весьма рекомендую статью с его блога: Работа с текстовыми файлами в любой кодировке из Delphi до 2009 (использоание TEncoding) Цитата:
|
|
01.02.2011, 13:50 | #7 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Ну если настолько с файлом не повезло, то после чтения можно эту ахинею перевести в UTF16 через WideCharToMultiByte(), задав CP936 или что-то подобное.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
01.02.2011, 17:41 | #8 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Вы пример файла покажите сначала.
P.S. Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
Последний раз редактировалось GunSmoker; 01.02.2011 в 17:46. |
|
01.02.2011, 20:01 | #9 |
Регистрация: 01.02.2011
Сообщений: 6
|
вот пример кода
Код:
|
01.02.2011, 21:10 | #10 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Это файл в UTF-8 с BOM.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Китайский или Анлийский | miscreant | Свободное общение | 30 | 22.01.2011 17:42 |
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism | savva-paladin | Софт | 18 | 02.10.2010 20:24 |
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? | redred | Общие вопросы Delphi | 10 | 11.12.2007 10:43 |
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? | dagarik | БД в Delphi | 7 | 22.10.2007 17:54 |