Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.05.2011, 17:43
Аватар для Zahariya
Новичок на форуме
Отправить личное сообщение для Zahariya Посмотреть профиль Найти все сообщения от Zahariya
 
Регистрация: 15.05.2011
Сообщений: 2

XML данные с сайта Gismeteo. Кодировка города
Данные по адресу http://informer.gismeteo.ru/xml/27612_1.xml
Название города sname="%CC%EE%F1%EA%E2%E0" выглядит вот так. Как сделать из этого читабельный вид?
Пробывал
document.write(unescape('%CC%EE%F1%EA%E2%E0'));
document.write(escape('%CC%EE%F1%EA%E2%E0'));
document.write(encodeURI('%CC%EE%F1%EA%E2%E0'));

ничего не выходит. Что не так?
Ответить с цитированием
  #2 (permalink)  
Старый 16.05.2011, 16:23
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

О, да, это фишка Гисметео. XML передается в utf-8, а имя города хранится в windows-1251.

Попробуйте вот такой костыль:
function win1251unescape(str){
var convTable = [0x402,0x403,0x201A,0x453,0x201E,0x2026,0x2020,0x2021,0x20AC,0x2030,0x409,0x2039,0x40A,0x40C,0x40B,0x40F,0x452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,0x20,0x2122,0x459,0x203A,0x45A,0x45C,
0x45B,0x45F,0xA0,0x40E,0x45E,0x408,0xA4,0x490,0xA6,0xA7,0x401,0xA9,0x404,0xAB,0xAC,0xAD,0xAE,0x407,0xB0,0xB1,0x406,0x456,0x491,0xB5,0xB6,0xB7,0x451,0x2116,0x454,0xBB,0x458,0x405,0x455,0x457,0x410,
0x411,0x412,0x413,0x414,0x415,0x416,0x417,0x418,0x419,0x41A,0x41B,0x41C,0x41D,0x41E,0x41F,0x420,0x421,0x422,0x423,0x424,0x425,0x426,0x427,0x428,0x429,0x42A,0x42B,0x42C,0x42D,0x42E,0x42F,0x430,0x431,
0x432,0x433,0x434,0x435,0x436,0x437,0x438,0x439,0x43A,0x43B,0x43C,0x43D,0x43E,0x43F,0x440,0x441,0x442,0x443,0x444,0x445,0x446,0x447,0x448,0x449,0x44A,0x44B,0x44C,0x44D,0x44E,0x44F]
	return str.replace(/%([0-9A-F]{2})/gi, function(nothing, charCodeStr){
		var charCode = parseInt(charCodeStr, 16);
		if (charCode < 0x7f){
			return String.fromCharCode(charCode);
		} else {
			return String.fromCharCode(convTable[charCode - 128]);
		}
	});
};

alert(win1251unescape('%CC%EE%F1%EA%E2%E0'))
Ответить с цитированием
  #3 (permalink)  
Старый 16.05.2011, 20:38
Аватар для Zahariya
Новичок на форуме
Отправить личное сообщение для Zahariya Посмотреть профиль Найти все сообщения от Zahariya
 
Регистрация: 15.05.2011
Сообщений: 2

Ура! Спасибо огромное, все получилось. Вот только вместо пробелов выходят плюсы. Например Нижний+Новгород. Надо еще что-то добавить?
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2011, 17:25
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Да, в шестой строке
return str.replace(/%([0-9A-F]{2})/gi, function(nothing, charCodeStr){

заменить на
return str.replace(/\+/g, '%20').replace(/%([0-9A-F]{2})/gi, function(nothing, charCodeStr){
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Не совсем обычный фрейм и выезжающий текст при наводе на картинку. amaz245 Элементы интерфейса 35 25.12.2010 17:29
Не могу выбрать данные с XML kill_windows AJAX и COMET 7 30.04.2010 12:13
XML данные в массив. Onis Общие вопросы Javascript 7 16.07.2008 00:12