Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кодировки, кодовые таблицы символов.

32K
28 июня 2010 года
Spoofing
10 / / 05.05.2008
Доброе время суток.

В сфере своего программирования в основном работаю с онлайн данными, - веб-сайты, IM протоколы для общения и т.д.
Для всего нужна своя кодировка, вобщем-то хорошо если это utf, но часто сталкиваюсь и с другими, когда приходится все-же делать минимум простые функции, хотя бы для перекодирования основных символов (А-Я, а-я).

Что такое кодировка в общем и как оно работает некоторое представление имею, но составлять базы кодировок очень геморно.

И так, собственно вопросы.
1) насколько я понял, во всех кодировках аски символы 1-127 одинаковые, начиная с 128 символа - уже зависит от кодировки?
2) к сожалению на языке, на котором я пишу приходится очень многие вещи делать самому с нуля, кодировки в их числе. Мне нужно найти какие-нибудь элементарные базы, просто список символов, которые нужно заменять чтобы из перекодировать текст из одной кодировки в другую. сталкивался ли кто-нибудь с таким и если имеется, можете поделиться?

На данный момент сделал просто замену букв а-я из cp1251 и koi8-r в utf-8 кодировку, но этого же мало наверняка. Хотелось бы больше кодировок, и знать какие аски символы в какой кодировке должны быть перекодированы.
3
28 июня 2010 года
Green
4.8K / / 20.01.2000
А что за язык такой?
339
29 июня 2010 года
verybadbug
619 / / 12.09.2005
1) да
2) читаем стандарты (в той же вики есть ссылки на стандарты в соответствующих темах)

пример (php)
Код:
function cp1251_to_utf8($txt, $back = false)  {
  $in_arr = array (
    chr(208), chr(192), chr(193), chr(194),
    chr(195), chr(196), chr(197), chr(168),
    chr(198), chr(199), chr(200), chr(201),
    chr(202), chr(203), chr(204), chr(205),
    chr(206), chr(207), chr(209), chr(210),
    chr(211), chr(212), chr(213), chr(214),
    chr(215), chr(216), chr(217), chr(218),
    chr(219), chr(220), chr(221), chr(222),
    chr(223), chr(224), chr(225), chr(226),
    chr(227), chr(228), chr(229), chr(184),
    chr(230), chr(231), chr(232), chr(233),
    chr(234), chr(235), chr(236), chr(237),
    chr(238), chr(239), chr(240), chr(241),
    chr(242), chr(243), chr(244), chr(245),
    chr(246), chr(247), chr(248), chr(249),
    chr(250), chr(251), chr(252), chr(253),
    chr(254), chr(255)
  );
  $out_arr = array (
    chr(208).chr(160), chr(208).chr(144), chr(208).chr(145),
    chr(208).chr(146), chr(208).chr(147), chr(208).chr(148),
    chr(208).chr(149), chr(208).chr(129), chr(208).chr(150),
    chr(208).chr(151), chr(208).chr(152), chr(208).chr(153),
    chr(208).chr(154), chr(208).chr(155), chr(208).chr(156),
    chr(208).chr(157), chr(208).chr(158), chr(208).chr(159),
    chr(208).chr(161), chr(208).chr(162), chr(208).chr(163),
    chr(208).chr(164), chr(208).chr(165), chr(208).chr(166),
    chr(208).chr(167), chr(208).chr(168), chr(208).chr(169),
    chr(208).chr(170), chr(208).chr(171), chr(208).chr(172),
    chr(208).chr(173), chr(208).chr(174), chr(208).chr(175),
    chr(208).chr(176), chr(208).chr(177), chr(208).chr(178),
    chr(208).chr(179), chr(208).chr(180), chr(208).chr(181),
    chr(209).chr(145), chr(208).chr(182), chr(208).chr(183),
    chr(208).chr(184), chr(208).chr(185), chr(208).chr(186),
    chr(208).chr(187), chr(208).chr(188), chr(208).chr(189),
    chr(208).chr(190), chr(208).chr(191), chr(209).chr(128),
    chr(209).chr(129), chr(209).chr(130), chr(209).chr(131),
    chr(209).chr(132), chr(209).chr(133), chr(209).chr(134),
    chr(209).chr(135), chr(209).chr(136), chr(209).chr(137),
    chr(209).chr(138), chr(209).chr(139), chr(209).chr(140),
    chr(209).chr(141), chr(209).chr(142), chr(209).chr(143)
  );
  $search = $back ? $out_arr : $in_arr;
  $replace = $back? $in_arr : $out_arr;
  $txt = str_replace($search, $replace, $txt);
  return $txt;
}
32K
29 июня 2010 года
Spoofing
10 / / 05.05.2008
Цитата: Green
А что за язык такой?


mSL (mIRC Scripting Language), не кидайте камнями - просто хобби/увлечение.

Цитата: verybadbug
1) да
2) читаем стандарты (в той же вики есть ссылки на стандарты в соответствующих темах)


Спасибо, на php.net поискал что-нибудь связанное с кодировками, нашел iconv. Там же нашел ссылку на libiconv, залянув в архив увидел очень вкусную папку tests, где в файлах представлены кодировки. 125 кодировок 6.4 мб, о большем и мечтать нельзя. Это и есть решение проблемы.


В файлах все представлено построчно:
<код символа в _этой_ кодировке><табуляция (9 аски символ)><код символа в юникоде>

Как пример, cp1251.txt.
Имеем строку: 0xFF 0x044F

в mIRC:
//echo -a $base(0xFF,16,10) - 255 символ, буква "я" в cp1251.
//echo -a $base(0x044F,16,10) - 1103 символ, та же буква "я" в unicode.

$chr(255) - cp1251
$chr(1103) - unicode.

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

Тему можно закрывать.
Еще раз спасибо. :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог