forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Аналог chr() для utf8 (http://forum.boolean.name/showthread.php?t=13031)

Dj_Alex 29.07.2010 12:03

Аналог chr() для utf8
 
Имеется код символа Utf-8, нужно получить сам символ.
Для этого использую массив с символами:
Код:

utf8[192]:='А';
utf8[193]:='Б';
utf8[194]:='В';
utf8[195]:='Г';
utf8[196]:='Д';
utf8[197]:='Е';
utf8[198]:='Ж';
utf8[199]:='З';
utf8[200]:='И';
utf8[201]:='Й';
utf8[202]:='К';
utf8[203]:='Л';
utf8[204]:='М';
..........

Возможно есть какой нибудь другой способ?

GRAY_WOLF 29.07.2010 12:43

Ответ: Аналог chr() для utf8
 
Возможно. В хелпе это есть.

Dj_Alex 29.07.2010 13:08

Ответ: Аналог chr() для utf8
 
В каком хелпе? МП? Там такого нет.

cHeRsAnYa 29.07.2010 13:19

Ответ: Аналог chr() для utf8
 
В этом массиве не UTF-8 коды, а cp-1251 :) UTF-8 кодирует русские буквы двумя байтами.

Dj_Alex 29.07.2010 13:58

Ответ: Аналог chr() для utf8
 
я в кодировках не шарю, коды брал из таблицы, там написано что utf8.

abcdef 29.07.2010 14:09

Ответ: Аналог chr() для utf8
 
для оптимизиции конвертировки обычно находят одинаковые последовательности кодов в таблицах и проверяют по ним: if (c>=192) and (c<=...) then c:=c+(1040-192)

прим: при получении символа cp1251 или др. на всякий случай делай с:=c and $FF, т.к. иногда в верхних байтах бывает мусор

Dj_Alex 29.07.2010 14:24

Ответ: Аналог chr() для utf8
 
В общем слово в таком формате
Код:

%CC%EE%F1%EA%E2%E0
необходимо преобразовать в нормальный вид.
я выбираю 2 символа после % и преобразовываю из HEX в DEC систему, а потом беру символ из массива.
Так то мой способ работает, но может можно сделать как то проще?


Часовой пояс GMT +4, время: 08:30.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot