В начале строки копируется символ EF BB BF(Byte Order Mark (BOM)), как убрать?
У некоторых пользователей копируется при вставке на сайт данных и этот символ, он попадает и в базу. Дальше, в программках которые не умеют их обрабатывать, показываются разные символы.
По сути это уже лишний символ в начале данных, природа его появления - notepad(но не все подряд).
На сайте его понятное дело не видно, а вот если поискать вообще по разным данным на сайте(ах) то он есть.
Кто сталкивался с ним? как его правильно обрабатывать и убирать.
Roman L.: сколько не интересовался этим вопросом, а интересовался много, так как приходится обрабатывать JSON полученный из 1с, это самый популярный способ. Что делает эта функция? Она не анализирует каждый байт данных. Она анализирует первые три байта. И если они соответствуют условию, то опять же, работа ведётся не с каждым байтом, а строка просто укорачивается на три байта с начала. Это не требует невообразимой мощи или огромного количества времени на обработку, поверьте. Выполнение занимает миллисекунды, если вообще занимает... Поинтересуйтесь архитектурой процессора и адресацией памяти.
А как быть если символ в конце или внутри?
select count(*) from materials where name like '%';
я сейчас скопировал этот символ после процента, если курсор двигать то на этом символе два раза нужно.
Roman L.: это символ UTF-32, то есть он занимает два байта, и естественно курсор пришлось двигать два раза. Если открыть в hex-редакторе, видно будет его код. Таким образом можно его с помощью того же PHP отследить и сделать с ним все что угодно. Если глубже капнуть, то можно и функцию разработать, для обработки подобных ситуаций.