-
> Mutilator (21.02.2012 13:48:19) [19]
POST запрос надо отсылать в Base64
-
> <meta http-equiv="Content-Type" content="text/html; charset=windows-
> 1252">
Это не эстонская кодировка
-
> POST запрос надо отсылать в Base64
ну причем же тут Base64 ?
если Mädarõigas завернуть в base64 получим TWFkYXJvaWdhcw==
если HU$TL? HA®D завернуть в base64 получим SFUkVEyIIEhBrkQ=
а должно быть как посылает в браузер:
Mädarõigas = M%E4dar%F5igas
HU$TL? HA®D = HU%24TL%80+HA%AED
-
теперь стало ясно что мы имеем дело с windows-1252, как зная это правильно закодировать WidsString?
-
-
И, наверное, надо выставить ANSI_CHARSET для едита, откуда приходит текст.
-
> Mutilator (21.02.2012 14:21:22) [22]
Это ANSI а не Unicode
-
> Mutilator (21.02.2012 14:23:23) [23]
Какие у тебя настройки для не Юникод программ
-
> Какие у тебя настройки для не Юникод программ
о чем речь? настройки в винде?
-
> о чем речь? настройки в винде?
ага, чтобы правильно работало не нужно преобразовывать в бникод, нужно взять как есть ANSI строку, и как есть ее конвертировать, но только под той же локалью что исходная, откуда копируешь. т.е.
> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
дожна быть она же. (правда тогда весь интерфейс "скракозяблиться" но ... )
можно кстати попробовать установить локаль перед конвертацией и возвращать после... но, для этого нужно как то понимать, что ты делаешь, откуда и как текст берешь. тест короче нужен, а не обрывки "тайных знаний". ну или сам.
-
мне нужно чтобы работала под любой виндой независимо от настроек
-
и это все, что есть сказать? ну тогда точно сам.
-
> Mutilator (21.02.12 00:51) [10]
>
> > тебе шашечки или ехать? Сервер такой метод кодирования
> устраивает?
>
> Нет, сервер такую кодировку не понимает. Выводит Mädarõigas
>
> > Этих методов URL кодирования не один единственный и все
>
> > корректные.
>
> Что за глупость? вот заголовок к серверу
> и как серверу понять каким именно образом раскручивать передаваемые
> данные, если в заголовке от браузера нет метода кодировки?
>
Может сначала почитал бы про URL кодирование что-то прежде чем бросаться словами "глупость и прочее". Представь себе, серверу зачастую приходится угадывать, в какой кодировке к нему поступили URL кодированные данные. Почему? Все очень просто. Допустим, серверу пердана последовательность %EA%EE% (здесь два символа к и о) - эти 2 байта с одинаковым успехом могут представлять собой как 1 символ UTF8 так и 2 символа ANSI. С помощью специальных статистических (и иных) методов большинство серверов умеет определять что реально было закодировано. Другой вариант кодирования, когда двухбайтные символы кодируются как %u043A%u043E (здесь два символа к и о). Есть еще третий вариант, который описывать не буду.
-
> Mutilator (21.02.12 14:23) [23]
> теперь стало ясно что мы имеем дело с windows-1252, как
> зная это правильно закодировать WidsString?
Конвертировать в нужную локаль с помощью WideStringToMultibyte и потом получившийся набор байт URL кодировать. Наверное так.
-
> WideStringToMultibyte
WideCharToMultibyte то есть
-
> Mutilator (21.02.2012 22:58:30) [30]
Без настроек когда это Unicode и у сервера правильная кодировка или utf08
или 1256
-
задача решена фрилансером за 30 секунд, вот рецепт:
uses TntSystem;
.......
ShowMessage(HTTPEncode(WideStringToStringEx(edt.Text, 1252)));
где edt - tntEdit
-
какие длинные 30 секунд получились... :)
а там ты тоже начал с того, что здесь, или с выясненного здесь - "нужно из юникода получить url кодирование в 1252"?
-
Задача не решена, а временно замаскировано, непрофессиональная работа
-
> Mutilator (29.02.12 22:16) [36]
если бы вдумался в написанное мной в [33] то может не понадобился бы ни фриленсер, ни модуль TNTSystem.