Я изучал множество тем, связанных с проблемами персонажей UTF8.Я подтвердил, что соединение с MySQL и база данных в порядке с UTF-символами, и обнаружили интересную проблему.
У меня есть форма, значения поля ввода которой хранятся в Class
.Однако, когда обе переменные $_POST
и Class
сбрасываются рядом друг с другом, я заметил, что переменные класса больше не содержат символов UTF8.
Мой класс имеет следующий конструктор (я тольковставка соответствующих битов, поскольку это огромный класс):
public function __construct($data = array()) {
if ( isset( $data['id'] ) ) $this->id = (int) $data['id'];
if ( isset( $data['order'] ) ) $this->order = preg_replace ( "/[^\.\,\-\_\'\"\@\?\!\:\$ a-zA-Z0-9()]/", "", $data['order'] );
if ( isset( $data['comment'] ) ) $this->comment = preg_replace ( "/[^\.\,\-\_\'\"\@\?\!\:\$ a-zA-Z0-9()]/", "", $data['comment'] );
}
Задача конструктора - очистить ввод от вредоносного ввода, я также протестировал регулярное выражение, и оно не соответствует ни одному из символов UTF8которые являются входными данными и используются как $something = new Booking($_POST)
$_POST
против Class
:
Postarray(17) { ["order"]=> string(18) "Külső-Belső Kárpit" ["comment"]=> string(0) "" }
Booking obj:object(Booking)#3 (17) { ["id"]=> NULL ["order"]=> string(14) "Kls-Bels Krpit" ["comment"]=> string(0) "" }
Я прочитал, что может быть что-то не так с кодировкой файла класса,Я использую Atom и при проверке кодировка файла показана как UTF8
.У кого-нибудь есть идеи, почему это так?