Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Vadim_Lasso
431 / 350 / 259
Регистрация: 29.11.2011
Сообщений: 627
1

Как лучше работать с символами строки в двухбайтовой кодировке?

28.02.2015, 19:46. Просмотров 580. Ответов 2
Метки нет (Все метки)

Возникла проблема с обработкой двухбайтовых строк.
Если с однобайтовой кодировкой все просто:
PHP
1
2
$s = 'abc'; 
echo $s[0] // a
То например символ кириллицы только одним ключом не получить:
PHP
1
2
$s = 'абв';
echo $s[0].$s[1] // a
В результате различные примеры классических алгоритмов на задачи по обработки строк (в которых к символам обращаются по ключу) оказываются не пригодными, если строка содержит кириллицу.
Как целесообразней поступать в такой ситуации?
Лучше преобразовывать строку в массив, чтобы можно было обращаться к символам, также как в однобайтовой кодировке?
Или преобразовывать строку в двухбайтовую кодировку, независимо от того, была ли она изначально однобайтовая 'abc' или двухбайтовая 'абв', ну и соответственно модифицировать алгоритмы на работу с двухбайтовой кодировкой строки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2015, 19:46
Ответы с готовыми решениями:

Как правильно определить длину строки в кодировке UTF-8?
подскажите как в этот код добавить utf-8 ? потому что русские символы тяжелее в...

Подкажите как лучше реализовать обрезку строки ?
Имеется массив с несколькими значениями "Автор - книга", нужно отделить Автора...

заполнить часть строки null символами
привет. для отправки запроса по некоторому протоколу, нужно сформировать...

Как работать с отдельными символами строки?
А можно ли как то работать с отдельными символами в строке?:( Один вопрос -...

Написать функцию выполняющую перевод строки с символами русского алфавита в кодировке UTF-8 в заданный набор символов
Помогите пожалуйста написать функцию выполняющую перевод строки с символами...

2
pav1uxa
1857 / 1711 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
28.02.2015, 20:02 2
Цитата Сообщение от LASSO Посмотреть сообщение
Как лучше работать с символами строки в двухбайтовой кодировке?
Да с символами строки лучше вообще не работать через []. Это как то нелепо смотрится, это же не массив - это строка. Можно запутаться в конце концов. Для строк есть специальные функции substr() или mb_substr() для многобайтных.

PHP
1
2
3
4
5
<?
mb_internal_encoding("utf-8");
 
$s="авб";
echo mb_substr($s, 0, 1);
Код
а
1
Vadim_Lasso
431 / 350 / 259
Регистрация: 29.11.2011
Сообщений: 627
28.02.2015, 20:24  [ТС] 3
Спасибо! mb_substr() оказывается даже быстрее работает, чем обращение по ключу

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$s = 'абв';
 
 
$start = microtime(true);
 
echo $s[0].$s[1];
 
$time = microtime(true) - $start;
printf("&nbsp;%.8F сек.", $time);
 
 
 
$start = microtime(true);
 
echo mb_substr($s, 0, 1);
 
$time = microtime(true) - $start;
printf("&nbsp;%.8F сек.", $time);
а 0.00001597 сек.
а 0.00000978 сек.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2015, 20:24

Кодировка: как работать с символами из таблицы cp866?
Здравствуйте! Пожалуйста подскажите, что нужно сделать, чтобы работать с...

Как хранить строки в кодировке UTF-8?
Как сделать, чтобы в строковом типе символы находились в кодировке utf8? в...

Как лучше работать с БД?
Подскажите пож. как эффективнее обновлять БД, с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru