我一直在寻找有关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
。有谁知道为什么会这样?
答案 0 :(得分:0)
我已经使用多个在线测试仪测试了var height = (48...96).map(String.init)
print(height)
字符串,而这确实是摆脱了UTF字符的原因-https://www.regextester.com/表现得很好。