А всётаки возможно ))
Тут разгорелась небольшая дискуссия относительно возможности преобразования кодировки на стороне клиента.
Передача текста в 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, время: 09:49. |