utf-8 to utf-16
Добрый день всем пользователям данного сайта.
У меня есть вопрос, ответ на который, google не стал мне давать. Хотя, возможно, я не правильно его спрашивал. ))) Проблема заключается в необходимости изменения кодировки "кирилици" перед отправкой HTTP запроса, точнее не совсем запроса, но это в общем не важно. В общем проблема в том что страница в кодировке UTF-8, а сторона принимающая HTTP запрос отображает полученные данные в UTF-16. Ни кодировку страницы ни кодировку, ожидаемую сервером, я сменить к сожалению не в силах((( Единственное что я могу это сменить кодировку перед отправкой HTTP запроса, но как это сделать я не знаю. Жду помощи и заранее спасибо. |
а)вы ошиблись разделом форума
б)ваше сообщение бессвязно я так и не понял что и откуда у вас идет, и что вы можете поменять, а что нет если я правильно понял, то вам стоит выставить в передаваемых данных правильный header типа файла в PHP это делается так(вставить в начале файла, до какого-либо вывода): header('Content-type: text/html; charset=utf-8'); |
Извиняюсь за пост не в том месте, и за не непонятный контент поста.
Как перенести пост я не знаю (возможно модеры помогут :) ), так что попробую просто уточнить и объяснить в чем заключался мой вопрос. Я имею: Сервер с базой, назовем его (S1) "Портал", который видит клиент,назовем его (SUI) HTTP сервер, принимающий запросы от клиента, пусть будет (S2) Методика такая: SUI получает данные хранящиеся в базе S1, данные приходят в кодировке UTF-8, после непродолжительной обработки SUI отправляет данные на сервер S2, S2 отображает полученные данные в кодировке UTF-16. С латиницей при таком раскладе все в порядке, а вот кириллица рассыпается в кашу. Вот я и хочу перед отправкой на сервер S2 перевести строку из UTF-8 в UTF-16. Подсказка с использованием PHP безусловно интересна, но к сожалению для решения данной проблемы мне доступен только js. |
В JavaScript нет инструментов для работы с кодировкой.
|
Цитата:
вот примет перевода кириллицы в строке в UTF к примеру function toUTF(string) { string = string.replace(/\r\n/g,"\n"); var utftext = "",h0,h1,h2; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { h1=((c >> 6) | 192).toString(16); if (h1.length==1) h1='0'+h1; h0=((c & 63) | 128).toString(16); if (h0.length==1) h0='0'+h0; utftext += '%'+h1+'%'+h0; } else { h2=((c >> 12) | 224).toString(16); if (h2.length==1) h2='0'+h2; h1=(((c >> 6) & 63) | 128).toString(16); if (h1.length==1) h1='0'+h1; h0=((c & 63) | 128).toString(16); if (h0.length==1) h0='0'+h0; utftext += '%'+h2+'%'+h1+'%'+h0; } } return utftext; } я просто не силен в структуре UTF-16((( так бы уже давно сам написал. |
Цитата:
Цитата:
|
гуглил конечно))) примеров готовых скриптов не нашел((( в педивикии немного о структуре UTF-16, но либо у меня руки не от туда растут, либо просто уже устал, ну "не выходит у меня каменный цветок" ))) в общем буду надеяться что кто то уже столкнулся с подобной проблемой и нашел ее решение.
|
вроде нашел алгоритм, проверяю работоспособность.
|
а каким образом вы пересылаете данные на S2?
может статся, что там есть способ задания кодировки пересылаемых данных |
к сожалению S2 для меня "черная коробочка" властью что либо менять там я не наделен((( это продукт сторонней компании.
|
Часовой пояс GMT +3, время: 00:01. |