Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2011, 20:15
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

А всётаки возможно ))
Тут разгорелась небольшая дискуссия относительно возможности преобразования кодировки на стороне клиента.

Передача текста в 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.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 20.09.2011 в 22:57.
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2011, 21:13
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

объясни зачем это нужно? никто ведь не говорил что если передавать не текст а коды символов то работать не будет. а так вместо простого iconv сначала в код ,а затем на клиенте его преобразовывать. зачем это?
речь вед шла о том ,что если нет доступа к серверному языку то невозможно. а так я не знаю что ты доказал...
наверное то что никто не оспаривал
оно стоило потраченного времени? да и ничего ты толком не сделал-невозможно изменить кодировку без серверной части!!
а так ты молодец-сотни строк кода ,загрузил и сервер и браузер неподетски вместо одного оператора iconv или ему подобных. совет один- учи мат часть и рассуждай трезво.
а то что ты сделал называется-ГОВНОКОД

Последний раз редактировалось dmitriymar, 20.09.2011 в 21:20.
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2011, 21:22
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Понятия неимею для чего это нужно. Для просмотрщика текстовых файлов на ucoz наверное )))))


не ты ли это писал ?)
Цитата:
Цитата:
преобразование кодировки силами скрипта логичнее, да и гибче намного.
скриптом нельзя поменять кодировку
и это

Цитата:
На одной две кодировки не могут согласен. Но изменить коды символов в строке так чтобы они показывали правильные буковки наверняка можно.
Цитата:
на клиенте не выйдет
Ну и какой из этого я должен был сделать вывод ?

Да и не в тебе дело, мне задача понравилась, а предложений от тех кто знает как решить не поступало. Покавырялся, сделал, получил удовольствие.

Охотно верю что ты знал как это сделать, как и многие здесь.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 20.09.2011 в 23:04.
Ответить с цитированием
  #4 (permalink)  
Старый 20.09.2011, 21:32
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

1 код какой ты взял за основу-признан говнокодом в момент его появленя и в комментах создатель этото подхода был обласкан
2 не выкидывай из контекста-контекст был что изменения делаются на серверной стороне,или у тебя сервер не участвует в этом?
3 изобретение велосепеда вместо обычных действий по приведению кодировки
4 ты скриптом не меняешь кодировку текста ты приводишь коды
ну и где у тебя связь с задачей?
продолжить?
всё также и осталось без использования сервера-НЕВОЗМОЖНО ИЗМЕНИТЬ КОДИРОВКУ!!!
я не имею ничего лично против тебя,но кода начинал изучать язык -налетал на много таких шедевров от жаждящих прославится и мнение о языке у меня после них падало и в такую. ..ню заводило

Последний раз редактировалось dmitriymar, 20.09.2011 в 21:40.
Ответить с цитированием
  #5 (permalink)  
Старый 20.09.2011, 22:00
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

времени я потратил всего 20 минут. Накидал и забыл, но благодаря тебе, ещё час ушёл на переписку))

1) Да говнокод конечно, я и неутверждаю что это всё имеет практическую ценность и неутверждаю что оформлено красиво, не до этого. Однако он всё таки работает. Предложи что нибудь на js лучше, а я буду мотать на ус.

Я конечно мог оформить посимпотичнее, я просто забил на это ). Не стоит принимать это так близко к сердцу.

2) Главное что в серверной части непришлось писать серверный скрипт.

3) тут согласен. Велосипед зло!

4) Ну да я привожу коды и что c того ? содержимое из файла с cp1251 вставляется в html utf8, или надо что-то ещё ?)))

Как вариант возможны реализации через arrayBuffer или blob, но смысл будет тот-же, передача сырых двоичных данных. Если кто подскажет как это сделать текстом, низкий ему поклон.


В любом случае надеюсь никогда с этой задачей не столкнусь на практике )
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 20.09.2011 в 23:56.
Ответить с цитированием
  #6 (permalink)  
Старый 20.09.2011, 22:40
Аспирант
Отправить личное сообщение для Sergey_New Посмотреть профиль Найти все сообщения от Sergey_New
 
Регистрация: 21.07.2009
Сообщений: 71

Этот вариант уже рассматривался. Не применим в ИЕ.
Ответить с цитированием
  #7 (permalink)  
Старый 20.09.2011, 22:44
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Даже так. На ie не тестил. Но если браузеры это критично (а обычно так и есть ), тогда надо думать дальше.

только не говори что тебе 6й ie нужен ))

Ну совсем жёсткий вариант, если сделать обёртку на flash какую нибудь попробывать.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 20.09.2011 в 23:10.
Ответить с цитированием
  #8 (permalink)  
Старый 20.09.2011, 22:46
Аспирант
Отправить личное сообщение для Sergey_New Посмотреть профиль Найти все сообщения от Sergey_New
 
Регистрация: 21.07.2009
Сообщений: 71

Не совсем
Решил с помощью апплета.
Ответить с цитированием
  #9 (permalink)  
Старый 20.09.2011, 22:58
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Сообщение от Sergey_New Посмотреть сообщение
Не совсем
Решил с помощью апплета.
ну или так
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 20.09.2011 в 23:03.
Ответить с цитированием
  #10 (permalink)  
Старый 25.09.2011, 19:31
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от DjDiablo
Да и не в тебе дело, мне задача понравилась, а предложений от тех кто знает как решить не поступало. Покавырялся, сделал, получил удовольствие.
по-моему достойная причина Желания прославиться не заметил. Возможно даже идея где-нибудь сможет пригодиться
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли выбрать такой элемент CSS pavvas jQuery 1 18.05.2011 09:43
Возможно ли это? white.bear Я не знаю javascript 1 05.01.2011 12:53
возможно ли привязать скроллинг к какому либо контейнеру random13 Events/DOM/Window 3 27.12.2009 16:45
Возможно ли отмасштабировать изображения скриптом. jokerbot jQuery 9 02.05.2009 22:22
возможно: массив + выборка mvorobjov Общие вопросы Javascript 5 13.08.2008 17:54