php проблема при обращении к строке как к масиву

12
V
На сайте с 10.01.2012
Offline
85
#11

Всем спасибо за советы, особенно Mad_Man за доп инфу - благодаря вам понял в чем все таки проблема, но оказалось все на много проще.

mb_convert_encoding(); к GET переменной и все заработало как нужно.

siv1987
На сайте с 02.04.2009
Offline
427
#12
Varenik:
mb_convert_encoding(); к GET переменной и все заработало как нужно.

Что заработало как нужно, substr строки по байтам? А дальше что делать с символами которые не соответствуют этой кодировки? Вам же сказали используйте mb_substr для многобайтовых кодировок.

V
На сайте с 10.01.2012
Offline
85
#13
siv1987:
Что заработало как нужно, substr строки по байтам? А дальше что делать с символами которые не соответствуют этой кодировки? Вам же сказали используйте mb_substr для многобайтовых кодировок.

substr как раз работала, а вот str_replace нет

Mad_Man
На сайте с 10.11.2008
Offline
162
#14

о_о

человечество обречено.

siv1987
На сайте с 02.04.2009
Offline
427
#15
Varenik:
substr как раз работала, а вот str_replace нет

Вы так и не поняли что работало а что нет. substr режет символы по байтам - в cp1251 один символ соответствует одному байту. В utf8 кириллица занимает два байта, а субстром вы режете только один байт (отсюда и квадратики - символ не полный). Поэтому, ни substr здесь нормально работать не будет, ни str_replace который будет заменять только один байт. Для этого есть mb_substr, который получает символы учитывая кодировку. Вы перекодировали строку, получили однобайтовые символы в кодировке cp1251 а дальше что с ними делать если в заменяемой строки данные в utf-8? Либо у вас заменяемая строка в cp1251 а получаете вы utf8 только из GET параметра. Вам нужно определится с кодировками, судя по всему у вас бардак.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий