1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

javascript, problem with charsets

Тема в разделе "Web Coding", создана пользователем Витюшон, 10 сен 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Витюшон

    Витюшон Создатель

    Регистр.:
    6 авг 2007
    Сообщения:
    23
    Симпатии:
    1
    добрый день!
    Появилась проблемка с кодировками в javascript.
    Сайт построен на utf-8, код яваскрипта берёт с другого сайта новости и пишет (document.write) в наш сайт. Проблема в том, что данные которые записывает яваскрипт далеко не в utf-8 :) а в win-1251. Как перекодировать данные, чтобы отображались они в утф-8 ?)
    HTML:
    if( jsopen )
              document.write("<a href=\"javascript:newsbody('"+akm_article[artcnt].url+"');\" class=\"akmhl\">");
           else
              document.write("<a href='"+akm_article[artcnt].url+"' target='_blank' class='akmhl'>");
              document.write(akm_article[artcnt].headline_text+"...</a><br>");
                     // Write the keywords
           document.write("<span class='akmkwdtm'>"+akm_article[artcnt].keywords+"</span>");
           // Write the time stamp
           document.write("<span class='akmkwdtm'>  "+akm_article[artcnt].harvest_time+"<br> <br></span>");
    примерно так выглядит кусочек кода по получению данных с другого сайта.
    нашёл такую функцию:
    HTML:
    function win2unicode(str) {
       var charmap   = unescape(
          "%u0402%u0403%u201A%u0453%u201E%u2026%u2020%u2021%u20AC%u2030%u0409%u2039%u040A%u040C%u040B%u040F"+
          "%u0452%u2018%u2019%u201C%u201D%u2022%u2013%u2014%u0000%u2122%u0459%u203A%u045A%u045C%u045B%u045F"+
          "%u00A0%u040E%u045E%u0408%u00A4%u0490%u00A6%u00A7%u0401%u00A9%u0404%u00AB%u00AC%u00AD%u00AE%u0407"+
          "%u00B0%u00B1%u0406%u0456%u0491%u00B5%u00B6%u00B7%u0451%u2116%u0454%u00BB%u0458%u0405%u0455%u0457")
       var code2char = function(code) {
                   if(code >= 0xC0 && code <= 0xFF) return String.fromCharCode(code - 0xC0 + 0x0410)
                   if(code >= 0x80 && code <= 0xBF) return charmap.charAt(code - 0x80)
                   return String.fromCharCode(code)
                }
       var res = ""
       for(var i = 0; i < str.length; i++) res = res + code2char(str.charCodeAt(i))
       return res
    }
    
    но что-то всё равно не получается =( помогите пожалуйста, сам в js не силён :(
     
  2. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    Я бы не стал заморачиваться с JS. Выдираем что нужно с сайта донора PHP`ой записываем в файл на своем серваке, предварительно сконвертировав iсonv`ом в нужную кодировку. Данные выводим своим шаблоном из PHP, а не JS.
    Плюсы этого решения:
    1. К сайту донору происходит обращение один раз - меньше шанс, что донор пропалит твои обращения
    2. Производительности твоего сайта не зависит от сайта донора, он (донор) ведь может лечь и положить твой сайт
    3. продвинутый пользователь посмотрев в JS не увидит откуда ты тащишь данные
     
  3. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
  4. Витюшон

    Витюшон Создатель

    Регистр.:
    6 авг 2007
    Сообщения:
    23
    Симпатии:
    1
    этот сервис сам предоставляет код для обращения к нему за новостями, так что ничего не пропалит :)

    решил делать как вы предложили, только немножко видоизменю
    1) пингуем сервер, если всё ок то читаем пхпшкой данные с него
    2) iconv перекодировка

    с сохранением новостей у себя решил не заморачиваться, клиенту хочеться чтобы новости были актуальными вплоть до 5 секунд :))
     
Статус темы:
Закрыта.