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, время: 10:35. |