![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 08.06.2011
Сообщений: 103
|
![]()
Приветствую Вас. Пишу программу для перевода Delphi-исходников с одного языка на другой (комментари, значения STRING и тд.) через онлайн переводчик от Google. Никак не могу понять, каким образом кодируется переменная TEXT, отправляемая в GET-запросе. С английским и русским языком все понятно, проблем не возникло, а вот с китайскими символами получилась проблема.
например, если взять китайский символ (http://sintetic.xaker.ru/Unit1.htm) (для просмотра символа нужно установить в свойствах отображения страницы кодировку - Китайская упрощенная) и вставить его в перевочик (http://translate.google.ru/), URL будет выглядеть так: Код:
Код:
с другими языками прокатывает нормально а вот с китайским не получается. то есть получается, браузер при переводе указанного выше символа выдает URL: http://translate.google.ru/translate_a/t?client=t&text=%E8%A7%A3&hl=ru&sl=zh-CN&tl=ru&multires=1&otf=1&pc=1&ssel =3&tsel=6&sc=1 А эта функция выдает URL: http://translate.google.ru/translate_a/t?client=t&text=%D0%85%D0%B2&hl=ru&sl=zh-CN&tl=ru&multires=1&otf=1&pc=1&ssel =3&tsel=6&sc=1 Помогите пожалуйста разобраться. Я уже голову сломал, не пойму никак где косяк.
Жизнь хорошая штука -и⊥ʎdʞ ин ʞɐʞ
![]() Последний раз редактировалось Den7656; 19.11.2011 в 04:51. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> не пойму никак где косяк
косяк в том куске говнокода, который вы нашли в тырнете. Надо просто перевести весь текст в человеческий UTF-8, а потом уже его заурленкодить.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 08.06.2011
Сообщений: 103
|
![]()
так там же и так оно кодируется в UTF8 в строчке:
utf8:=UTF8Encode(s[i]); // Convert to utf-8
Жизнь хорошая штука -и⊥ʎdʞ ин ʞɐʞ
![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
хм, говнокод таки рабочий, хоть и написан через задницу.
У меня в XE2 он выдаёт %E8%A7%A3, так что признавайтесь, какая у вас версия Дельфи, будем посмотреть.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 08.06.2011
Сообщений: 103
|
![]()
delphi 7.
Странно, почему такое может быть... ![]()
Жизнь хорошая штука -и⊥ʎdʞ ин ʞɐʞ
![]() |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
потому, что в Дельфи 7 string — это AnsiString. Поменяйте заголовок на:
Код:
У меня в 7 дельфи оно, после изменения заголовка, выдаёт %E8%A7%A3 По-нормальному, функция должна выглядеть примено так: Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 19.11.2011 в 05:50. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 08.06.2011
Сообщений: 103
|
![]()
Не получается (
Вот исходник, почти весь мусор вычистил. Может посмотрите в чем дело, если есть возможность и желание. В любом случае спасибо большое. http://programmersforum.ru/attachmen...1&d=1321667862
Жизнь хорошая штука -и⊥ʎdʞ ин ʞɐʞ
![]() |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 08.06.2011
Сообщений: 103
|
![]()
Исправил функцию на Вашу, получаю %D0%85%D0%B2.
Видимо, действительно, не так загружаю символ.
Жизнь хорошая штука -и⊥ʎdʞ ин ʞɐʞ
![]() Последний раз редактировалось Den7656; 19.11.2011 в 06:40. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
А, ну так, "charset=GBK", это ж надо из этой китайской кодировки его сначала декодировать в человеческий юникод (UTF-16), а потом уже кормить гуглу.
В общем, в AnsiString побайтно записываете символы, для 解 первый байт (в GBK кодировке) будет BD, второй E2. Далее, эту AnsiString перегоняем в юникод: Код:
После этого уже передаёте её в URLEncode().
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 08.06.2011
Сообщений: 103
|
![]()
Спасибо ОГРОМНОЕ !!!! Очень много времени на этом убил и еще не знаю сколько убил-бы... С меня +
Жизнь хорошая штука -и⊥ʎdʞ ин ʞɐʞ
![]() |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
socket и потоки ТРАБЛА не знаю какая ! | fucil | Работа с сетью в Delphi | 0 | 21.09.2011 21:14 |
трабла с кодировкой текста | MyLastHit | Общие вопросы Delphi | 10 | 23.08.2010 17:38 |
трабла с idsmtp | b2soft | Работа с сетью в Delphi | 1 | 20.03.2010 00:35 |
Трабла с Radiogroup | Seran4ek | Помощь студентам | 7 | 29.11.2009 01:15 |
трабла с PlaySound | C-мэн | Win Api | 2 | 16.11.2008 18:35 |