• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Что делать с кодировкой?

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Господа, проблема следующая.

язык: PHP
база: Postgres (хранит данные в кодировке KOI8-R)

В форме (допустим в текстовом поле) пользователь заполняет данне. После нажатия на кнопарь эти данные должны сохраниться в базе. Но если в этом текстовом поле юзер вводит символ "№", то после сохранения данных меняется кодировка.

Пример 1:
Ввожу "ТЕСТ 1"
Сохраняется в базе "ТЕСТ 1"

Пример 2:
Ввожу "ТЕСТ №1"
Сохраняется в базе "реяр ╧1"

Что делать? Хотелось бы чтобы юзерам можно было использовать все возможные символы, в том числе и "№"
 
A

Arm0

а перед записью в базу меняй "опасные" символы на какой-нить свой спец символ...
что то типа
Код:
$text = str_replace("№", "~", $text);
при чтении из базы - обратное действие.

но это все на случай, если ничего другого сделать нельзя. я думаю дело в настройках... сначало надо в них покопаться.
 
E

ExtremeRuff

не приходилось с таким иметь дело но лепш делать так - использовать ф-цию convert_cyr_string ("Строка тута", "2-й параметр", "3-й параметр");

2-й и 3-й параметры принимают значения -
Значение Кодировка
k -> KOI8-R
w -> win1251
m -> x-mac-cyrillic .... Ну и поехало

так вот 2-й параметр задаёт исходную кодировку строки
а 3-й - требуемую.... перекодированную строку эта функция и возвращает. вот. думаю пойдёт.
 
A

Andrew Stephanoff

в MySQL можно задавать в настройках кодировку как таблицы, так и отдельных полей.. и при запросе к БД вначале выполнять "SET charset cp1251"
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!