js, php, encoding

zeltais

Новичок
js, php, encoding

добрый день!
Появилась проблемка с кодировками в javascript.
Сайт построен на utf-8, код яваскрипта берёт с другого сайта новости и пишет (document.write) в наш сайт. Проблема в том, что данные которые записывает яваскрипт далеко не в utf-8 :) а в win-1251. Как перекодировать данные, чтобы отображались они в утф-8 ?) или как сделать чтобы обработать их пхпшкой ? не смог придумать =(

примерно так выглядит кусочек кода по получению данных с другого сайта.
PHP:
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>");
нашёл такую функцию:
PHP:
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+php не силён :(
 

zeltais

Новичок
это яваскрипт код )
он выводит данные через document.write()
как мне перекодировать то что он пишет в документ ?

скрипт берёт данные с другого сервера, на том сервере отказались сделать и утф-8 версию :)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Данные jsopen как получаете?

-~{}~ 10.09.07 18:33:

<script type="text/javascript" src='js_script_name.js'></script>
?
 

zeltais

Новичок
Автор оригинала: Mr_Max
Данные jsopen как получаете?

-~{}~ 10.09.07 18:33:

<script type="text/javascript" src='js_script_name.js'></script>
?
PHP:
function newsbody( url )
{
	wndnewsbody=window.open( url,'akmosnewsbody',
'toolbar=no,scrollbars=yes,resizable=yes,menubar=no,status=no,directories=no,location=no,width=540,height=360' );
	if( window.focus )
		wndnewsbody.focus( );
}
</script>

<script language="JavaScript" src="http://www.akmos.ru/main/market/news/headlines?count=15">
</script>
<script language="JavaScript">
<!--
  // fix links in akm_article array
  var exit_now = true;
  var jsopen = true;

  if( akm_article != null && (akm_article.length > 0) )
  {
    exit_now = false;
    for( var artcnt = 0; artcnt < akm_article.length; artcnt++ )
    {      
       akm_article[artcnt].url = "http://www.akmos.ru/main/market/news/body"+
         akm_article[artcnt].artid+".html?bgc=eef2f5&fgc=000000";
    }
  }
// -->
</script>
вот так :)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
zeltais
1 Читаете средставами пхп http://www.akmos.ru/main/market/news/headlines?count=15
2 Изменяете при помощи [m]iconv[/m]
Потом
<script language="JavaScript">
Вставляете результат из п.2
</script>

Что-то типа того
 

Линка

Новичок
zeltais
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
trans = i - 0x350;
trans[0x401] = 0xA8;
trans[0x451] = 0xB8;

var escapeOrig = window.escape;

window.escape = function(str)
{
var ret = [];
for (var i = 0; i < str.length; i++){
var n = str.charCodeAt(i);
if (typeof trans[n] != 'undefined')
n = trans[n];
if (n <= 0xFF)
ret.push(n);
}
return escapeOrig(String.fromCharCode.apply(null, ret));
}

дальше рулить просто escape(str)
 

zeltais

Новичок
Автор оригинала: Линка
zeltais
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
trans = i - 0x350;
trans[0x401] = 0xA8;
trans[0x451] = 0xB8;

var escapeOrig = window.escape;

window.escape = function(str)
{
var ret = [];
for (var i = 0; i < str.length; i++){
var n = str.charCodeAt(i);
if (typeof trans[n] != 'undefined')
n = trans[n];
if (n <= 0xFF)
ret.push(n);
}
return escapeOrig(String.fromCharCode.apply(null, ret));
}

дальше рулить просто escape(str)

%20%20%20%20%20%20...
12-Sep-2007 14:15

%20%20%2C%20%20%20-%20...
%20 12-Sep-2007 13:53

%20%20%20%20%20%20%202-%20...
12-Sep-2007 13:46

%20%20%20%20/...
%20 12-Sep-2007 13:24

%20%20%20%20/...
%20 12-Sep-2007 13:22

%20%20%20%20/...
%20 12-Sep-2007 13:18

%20%20%20%20/...
%20 12-Sep-2007 13:16

-13%3A%20%2C%20%20%20.%20%20.%20/%2C%20+2%2C4%25%20/%20%28.%20-0%2C1%25%20/%2C%20+2%2C3%25%20/%29...
12-Sep-2007 13:03
вот такая штукенция получилась :confused:
 
Сверху