Русские буквы в сылке и в БД, как правильно
-
привет всем,
установил вордпресс и обнаружил что ссылку на русском он обрезает до примерно 33знаков, поскольку в БД размер таблицы установлен varchar(200) а русские буквы перекодируются (зачем-то) в какие-то непонятные значки с процентами, что одна буква превращается в 6 знаков.
Как отключить это перекодирование чтоб русские буквы нормальным образом сохранялись в БД?Не надо пожалуйста только говорить про невозможность этого — ибо: чем отличается русская буква Г от якобы нормальной латинской L, русская T от латинской t, русские НОРМСХУЕАВ и прочие от точно таких же на латыне???
На ДЛЕ я кстати исправил данный момент и русские буквы нормальным образом сохраняются в БД, заменив в коде [^a-z0-9\_\-] на
[^(\w)|(\x7F-\xFF)|(0-9)|(\_\-.)]
И никаких проблем не возникает и никакой необходимости в замене русских букв на какие-то проценты нет.
Как это можно исправить в БДСпасибо
-
Не расскажите нам сирым?
Во-первых вопрос адресовался не Вам. Во-вторых: это лучше Вы мне расскажите, как убрать кодирование букв.. А то Вы о чём угодно говорите, но только не о сути вопроса.
Я кстати сказал: в основном на Линукс-системах, у которых никаких проблем с UTF или русскими буквами нетПервые IBM и Pentium-ы появились (массово) в 90х, именно это я и имел ввиду, когда указал когда была изобретена кодировка UTF, в ответ на утверждения «про подождать пока вся цифра начнет понимать кодировку»
Во-первых вопрос адресовался не Вам.
А я Вас спросил.
это лучше Вы мне расскажите, как убрать кодирование букв..
Всего-то и нужно — создать свой интернет, где протоколы будут поддерживать кириллицу. А пока этого нет и в обозримом будущем не будет. (На счёт пары лет wikicms сильно погорячился 😉 )
кодировка UTF
Подумайте — где и как «это» происходит.
А я Вас спросил.
Тоже не знаете? 🙂 — я как в том же сообщении написал, так и позже: на Линукс системах, на которых нет никакой проблемы с русскими буквами.
У mysql (если она используется) также нет никакой проблемы с УТФ.. В броузерах тоже нет никакой проблемы с УТФ, даже в самых древних.
Проблема только в том что вордпресс, прежде чем сохранить ссылку в БД, её перекодирует в непонятные и никому не нужные проценты, которые занимают в 6 раз больше места, которые и выдаются потом в адресную строку, вместо того чтоб сохранять нормальным образом ссылку в кодировке утф.Всего-то и нужно — создать свой интернет
Всё давно придумано и создано, а вот при чем тут интернет вообще непонятно 🙂
Подумайте — где и как «это» происходит.
Поскольку я не знаю где это происходит — то и спросил
где протоколы будет поддерживать кириллицу
при чем тут это вообще? … При чем тут протокол?: )) ..
при чем тут это вообще?
как бэ при том, что
выдаются потом в адресную строку,
и
в какие-то непонятные значки с процентами
🙂
Ещё раз — изучение выше данных ссылок поможет понять так страстно искомую суть 🙂
Там же содержится и ответ на:Поскольку я не знаю где это происходит — то и спросил
:))) … ПРОТОКОЛ тут ни при чем.. Протокол ПЕРЕДАЧИ данных вообще НИ ПРИ ЧЕМ… Всё равно что трубе без разницы, что через неё качают: газ, золото или навоз …
Вы вообще понимаете что я говорю? Я же сказал, что с той же ДЛЕ (DLE — система cms такая) НЕТ… ПоНИМАЕТЕ … НЕТ! никакой проблемы с сохранением в базу данных русских букв в том виде как они есть и их соответственно выводом оттуда тоже нет никаких проблем! … (после некоторых изменений в коде, как сказал)
Я ж по-русски пишу вроде.
В противном случае исходя из Ваших умозаключений про протоколы следует то, что текст написанный на русском не сохраняется и в БД. Точнее не передаётся. Вы ж про протокол говорите. Что есть неправильно, поскольку говорю исходя из своего опыта: сохраняется все и выводится всё без проблем: в кодировке утф.Где отключить кодирование букв в эти проценты, кто-нибудь знает?
хотя так и не пойму при чем тут протокол :)) .. Вот есть протокол http, по которому и передаются данные: от сервера — броузеру… Русские буквы передаются не в открытом виде (чтоб говорить о проблемах с протоколом), а в кодировке УТФ: (а можно также еще и в кои или вин-1251 (вроде)) которая прекрасным и нормальным образом передается по пртоколу хттп от сервера Линукс любому броузеру .. только это все не имеет в данный момент значения, потому как передаются данные ИЗ БД.. А в БД, в данном случае эти данные были сохранены в виде каких-то там ПРОЦЕНТОВ … Соответственно в адресной строке НИЧЕГО ИНОГО КРОМЕ КАК ПРОЦЕНТОВ И НЕ МОЖЕТ появиться.
Я русский текст могу сохранить в БД в нормальном виде используя кодировку УТФ… НЕТ проблем! .. Зачем мне кодировать его в 6-ти значные процентные значки??
Проблема только в том, что сейчас этот русский текст ПЕРЕКОДИРУЕТСЯ в проценты и в таком убогом виде сохраняется в БД…ГДЕ отключить это кодирование в проценты?
Кстати, на Джумле (joomla- тоже система cms такая), также нет никаких проблем с сохранением русских букв в БД в нормальном виде.
Добавьте в functions.php активной темы строку
remove_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3 );
и в будут Вам в
post_name
русские буквы.Только чур потом не обижаться!
хорошо, попробую, спасибо.
Да какие обиды..@e-alexey
Кодировка UTF изобретена согласно википедии еще в далеком 1992
Угу, а зачатки URL еще раньше http://ru.wikipedia.org/wiki/URL (кстати, там ссылки и на спецификации есть).
А при чем тут кстати цифра (цифровая техника)? )) .. Вы видимо не знаете просто на чем работают сайты, да? :))
Цифра — это сокращенка. И по сайтам ничего не понял.
К слову: кодировка UTF широко используется в линукс системах, коими являются абсолютное количествто серверов в интернете. И в линуксе с русскими символами также нет никаких проблем. Проблема в данном случае лишь в том, что кому-то зачем-то пришло в голову перекодировать русские буквы в непонятные проценты, хотя они элементарно сохраняются в базе данных в кодировке UTF..
Это сделано для снижения нагрузки, лучше один раз до записи в БД правильно закодировать (согласно действующей спецификации) и просто извлекать, чем после извлечения постоянно кодировать. Чувствуете разницу?
Проблемы с кодировкой нет. Есть в головах
Возможно. Обновление спецификаций идет медленно, относительно медленно, но вы должны быть готовы, что остальные сервисы, софт, да и просто люди работающие с цифрой будут ожидать от ваших УРЛов кодированную строку, согласно той же спецификации. Вот скажите, а на кой им под вас подстраиваться? Например, тем же поисковым системам??
Новую спецификацию введут и все вздохнут с облегчением :))
Засим откланиваюсь.Всё понятно. Откляняюсь ничего не ответив =)
кстати, там ссылки и на спецификации есть
Это все не особо важно (в данном вопросе). Я же уже несколько раз повторил что мне надо в БД ссылку сохранять в нормальном виде, иначе она сильно обрезается (до 30-40 знаков).. Её можно также и в кои и в вин1251 сохранять: не имеет значения.
Зачем кодировать в ПРОЦЕНТЫ? Всё элементарно сохраняется в нормальном виде а проценты разносят базу данных.. Точнее при одном и том же размере таблицы БД пользователь получает более короткую ссылку. Таким образом кодирование в проценты делает автоматически использование русских букв АБСОЛЮТНО нецелесообразным, а это не есть правильно.Это сделано для снижения нагрузки лучше один раз до записи в БД правильно закодировать
Зачем кодировать к примеру те же: АВМТРОКУЕНСХ? Во-вторых, я бы как-то сам решал, что мне важнее: нагрузка или размер ссылки. Для меня важнее ссылка, а техника для того и есть чтоб решать поставленные задачи.
Кстати а чем ПО СУТИ отличается ссылка от содержимого текста ? — да НИЧЕМ! .. Но ведь с представлением содержимого сайта нет никаких проблем. И оно не сохраняется в каких-то там процентах … и так далее короче.
чем после извлечения постоянно кодировать
а ссылка в виде процентов по Вашему выходит не кодируется обратно в нормальный текст? — кодируется. Так что те же яйца только сбоку, но при этом база данных в 6 раз больше, (а точнее ссылка меньше) что тоже кстати влияет на производительность и на извлечение данных их нее.
(можно привести аналогию с архивами: никогда не закачивали на сервер файлы в архиве и распакованные? Быстрее, проще и с меньшей нагрузкой загружаются файлы помещенные в архив. Так что по-моему один знак в утф проще вынуть из БД чем тот же знак закодированный в виде 6ти значных процентов. Не говоря о том, что вручную БД Вы уже править не сможете, если вдруг что-то случится )
В общем ненужный геморройОбновление спецификаций идет медленно
Еще раз повторю и в Джумле и в ДЛЕ (и в Магенте вроде) ссылка сохраняется в БД в нормальном виде..
Возможно она потом после копипаста из адресной строки и примет вид всё тех же процентов, но меня сейчас интересует только сохранение ссылки в БД в нормальном виде а не в каких-то там процентах. Потому что проценты занимают в 6 раз больше места в БДНапример, тем же поисковым системам??
Вообще всё в мире должно быть ориентировано в первую очередь ПОД человека и ДЛЯ человека.
Все это вспомогательные инструменты: они для человека вспомогательны, а не наоборот.Добавьте в functions.php активной темы строку
remove_filter( ‘sanitize_title’, ‘sanitize_title_with_dashes’, 10, 3 );
и в будут Вам в post_name русские буквы.
да, отключив фильтр, ссылки добавляются в нормальном виде, но некоторая проблема: пробелы (и видимо другие знаки) не заменяются на скажем — (тире)
Нашел в сети такой вариант для замены точек в ссылке на тире: (добавил строчку для пробелов)
remove_filter(‘sanitize_title’, ‘sanitize_title_with_dashes’);
add_filter(‘sanitize_title’, ‘my_sanitize_title’);function my_sanitize_title($title) {
$title = str_replace(‘.’, ‘-‘, $title);
$title = str_replace(‘ ‘, ‘-‘, $title);
$title = sanitize_title_with_dashes($title);
return $title;
}В итоге проба ссылки превратилась в проба-ссылки, но в БД опять проценты.
И еще хотел спросить что означают значения 10 и 3 в приведенной Вами функции?
И еще хотел спросить что означают значения 10 и 3 в приведенной Вами функции?
Приоритет и кол-во аргументов. Подробности в Кодексе http://codex.wordpress.org/Function_Reference/remove_filter
понятно, спасибо.
Правда исправленная мною функция не работает: в БД опять сохраняются проценты.
Отключать function sanitize_title_with_dashes скорее всего не стоит, её надо исправить, чтоб корректно обрабатывала символы и не кодировала их в проценты
- Тема «Русские буквы в сылке и в БД, как правильно» закрыта для новых ответов.