А всётаки возможно ))
Тут разгорелась небольшая дискуссия относительно возможности преобразования кодировки на стороне клиента.
Передача текста в SimpleText действительно провальная затея. поэтому пришлось передавать данные как есть, в двоичном виде. Передача в двоичном виде как нестранно проблемой не оказалась. Первый способ, в Html5 XMLHttpRequest 2 знает что такое блобы. второй способ) В инете я без труда нарыл хак, для текущей версии XMLHttpRequest я выбрал второй способ. Получил строку байтов. И перебрал её в цикле преобразовав каждый байт в символ нужной мне кодировки. При этом никаких php скриптов непонадобилось Вот скрипт
<html>
<HEAD>
<script src="jquery/jquery-1.6.1.min.js" type="text/javascript" charset="utf-8"></script>
</HEAD>
<body>
<div id="test">
</div>
<script>
function decode (code) {
if (code>127){
return String.fromCharCode(code + 848);
} else return String.fromCharCode(code);
}
var text="";
var xhr = new XMLHttpRequest();
//xhr.open('GET', 'http://tester.ru/hello.txt', true);
xhr.open('GET', 'hello.txt', true);
// ХОТИМ БАЙТЫ В НЕИЗМЕННОМ ВИДЕ
xhr.overrideMimeType('text/plain; charset=x-user-defined');
xhr.onreadystatechange = function(e) {
if (this.readyState == 4 && this.status == 200) {
var binStr = this.responseText;
for (var i = 0, len = binStr.length; i < len; ++i) {
var c = binStr.charCodeAt(i);
//String.fromCharCode(c & 0xff);
var byte = c & 0xff;
text+=decode(byte);
}
$('body').html('<h1>'+text+'</h1>');
}
};
xhr.send();
</script> </body> </html> рабочий пример. здесь :http://depositfiles.com/files/pkv4dwmqx или здесь:http://javascript.ru/forum/attachmen...1&d=1316535516[/url] Запускать пример естественно на сервере. Лично я проверял под apache. |
объясни зачем это нужно? никто ведь не говорил что если передавать не текст а коды символов то работать не будет. а так вместо простого iconv сначала в код ,а затем на клиенте его преобразовывать. зачем это?
речь вед шла о том ,что если нет доступа к серверному языку то невозможно. а так я не знаю что ты доказал... наверное то что никто не оспаривал:haha: оно стоило потраченного времени? да и ничего ты толком не сделал-невозможно изменить кодировку без серверной части!! а так ты молодец-сотни строк кода ,загрузил и сервер и браузер неподетски вместо одного оператора iconv или ему подобных. совет один- учи мат часть и рассуждай трезво. а то что ты сделал называется-ГОВНОКОД |
Понятия неимею для чего это нужно. Для просмотрщика текстовых файлов на ucoz наверное )))))
не ты ли это писал ?) Цитата:
Цитата:
Да и не в тебе дело, мне задача понравилась, а предложений от тех кто знает как решить не поступало. Покавырялся, сделал, получил удовольствие. Охотно верю что ты знал как это сделать, как и многие здесь. |
1 код какой ты взял за основу-признан говнокодом в момент его появленя и в комментах создатель этото подхода был обласкан
2 не выкидывай из контекста-контекст был что изменения делаются на серверной стороне,или у тебя сервер не участвует в этом?:D 3 изобретение велосепеда вместо обычных действий по приведению кодировки 4 ты скриптом не меняешь кодировку текста ты приводишь коды ну и где у тебя связь с задачей? продолжить? всё также и осталось без использования сервера-НЕВОЗМОЖНО ИЗМЕНИТЬ КОДИРОВКУ!!! я не имею ничего лично против тебя,но кода начинал изучать язык -налетал на много таких шедевров от жаждящих прославится и мнение о языке у меня после них падало и в такую. ..ню заводило |
времени я потратил всего 20 минут. Накидал и забыл, но благодаря тебе, ещё час ушёл на переписку))
1) Да говнокод конечно, я и неутверждаю что это всё имеет практическую ценность и неутверждаю что оформлено красиво, не до этого. Однако он всё таки работает. Предложи что нибудь на js лучше, а я буду мотать на ус. Я конечно мог оформить посимпотичнее, я просто забил на это ). Не стоит принимать это так близко к сердцу. 2) Главное что в серверной части непришлось писать серверный скрипт. 3) тут согласен. Велосипед зло! 4) Ну да я привожу коды и что c того ? содержимое из файла с cp1251 вставляется в html utf8, или надо что-то ещё ?))) Как вариант возможны реализации через arrayBuffer или blob, но смысл будет тот-же, передача сырых двоичных данных. Если кто подскажет как это сделать текстом, низкий ему поклон. В любом случае надеюсь никогда с этой задачей не столкнусь на практике ) |
Этот вариант уже рассматривался. Не применим в ИЕ.
|
Даже так. На ie не тестил. Но если браузеры это критично (а обычно так и есть :) ), тогда надо думать дальше.
только не говори что тебе 6й ie нужен )) Ну совсем жёсткий вариант, если сделать обёртку на flash какую нибудь попробывать. |
Не совсем :)
Решил с помощью апплета. |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 13:28. |