Selectize 正在插入一个 ?数据值属性中的字符
Selectize is inserting a ? character in data-value attribute
我正在使用 selectize.js 构建比利时所有城市的下拉列表。
var cityselect = $('.city-select');
if (cityselect.length) {
$('.city-select').selectize({
create: false,
sortField: {
field: 'text',
direction: 'asc'
},
dropdownParent: 'body',
plugins: ['remove_button']
});
}
我创建 selectize 字段如下:
<div class="form-group">
<label for="city"><?=lang("register_volunteer_select_city_or_commune")?></label>
<select id="city" class="city-select" name="city" autocomplete="new-password" required data-validation-required-message="<?=lang("register_volunteer_select_city_or_commune_validation")?>">
<option value="" selected><?=lang("register_volunteer_select_city_or_commune")?></option>
<?php
foreach ($citiesbe as $city) {
if ($this->currentLanguage == 'fr') {
$cityName = $city->name_fr;
} else {
$cityName = $city->name_nl;
}
$key = strtolower($cityName) . "," . $city->zip_code;
echo "<option value=\"$key\"> $cityName ($city->zip_code)</option>";
}
?>
</select>
<div class="help-block font-small-3"></div>
</div>
在比利时,有很多城市的法语名称(例如:Léglise)中包含特殊字符(é, è, ç, ...)等。
变量 $citiesbe 来自我的 table "cities_be",Léglise 的条目如下所示:
+--------------+----------+---------+---------+--------+-------+
| cities_be_id | zip_code | name_nl | name_fr | lat | lng |
+--------------+----------+---------+---------+--------+-------+
| 1786 | 6860 | Léglise | Léglise | 49,784 | 5,538 |
+--------------+----------+---------+---------+--------+-------+
然后在我的 selectize 中,我可以 select Léglise,它看起来很棒,但是当我检查元素时,我会注意到数据值设置为以下值:
<div data-value="l�glise,6860" class="item"> Léglise (6860)</div>
因为它插入特殊字符(本例中的 é)作为 ?它通过 POST 变量将其作为 ?因此它会产生很多错误。
我该如何解决这个问题?
我已将我的数据库字符集和排序规则设置为 utf8mb4,通过 PHP 与数据库的连接也设置为 utf8mb4,并且我的文档包含一个字符集行:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
我完全运行不知道如何解决这个问题。
您尝试过使用 mb_strtolower() 吗?
https://www.php.net/manual/en/function.mb-strtolower.php
$b = mb_strtolower($a);
echo $b;
PHP5 不兼容 UTF-8,不适用于多字节字符,因此您仍然需要求助于 mb 扩展名。
我正在使用 selectize.js 构建比利时所有城市的下拉列表。
var cityselect = $('.city-select');
if (cityselect.length) {
$('.city-select').selectize({
create: false,
sortField: {
field: 'text',
direction: 'asc'
},
dropdownParent: 'body',
plugins: ['remove_button']
});
}
我创建 selectize 字段如下:
<div class="form-group">
<label for="city"><?=lang("register_volunteer_select_city_or_commune")?></label>
<select id="city" class="city-select" name="city" autocomplete="new-password" required data-validation-required-message="<?=lang("register_volunteer_select_city_or_commune_validation")?>">
<option value="" selected><?=lang("register_volunteer_select_city_or_commune")?></option>
<?php
foreach ($citiesbe as $city) {
if ($this->currentLanguage == 'fr') {
$cityName = $city->name_fr;
} else {
$cityName = $city->name_nl;
}
$key = strtolower($cityName) . "," . $city->zip_code;
echo "<option value=\"$key\"> $cityName ($city->zip_code)</option>";
}
?>
</select>
<div class="help-block font-small-3"></div>
</div>
在比利时,有很多城市的法语名称(例如:Léglise)中包含特殊字符(é, è, ç, ...)等。 变量 $citiesbe 来自我的 table "cities_be",Léglise 的条目如下所示:
+--------------+----------+---------+---------+--------+-------+
| cities_be_id | zip_code | name_nl | name_fr | lat | lng |
+--------------+----------+---------+---------+--------+-------+
| 1786 | 6860 | Léglise | Léglise | 49,784 | 5,538 |
+--------------+----------+---------+---------+--------+-------+
然后在我的 selectize 中,我可以 select Léglise,它看起来很棒,但是当我检查元素时,我会注意到数据值设置为以下值:
<div data-value="l�glise,6860" class="item"> Léglise (6860)</div>
因为它插入特殊字符(本例中的 é)作为 ?它通过 POST 变量将其作为 ?因此它会产生很多错误。
我该如何解决这个问题?
我已将我的数据库字符集和排序规则设置为 utf8mb4,通过 PHP 与数据库的连接也设置为 utf8mb4,并且我的文档包含一个字符集行:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
我完全运行不知道如何解决这个问题。
您尝试过使用 mb_strtolower() 吗?
https://www.php.net/manual/en/function.mb-strtolower.php
$b = mb_strtolower($a);
echo $b;
PHP5 不兼容 UTF-8,不适用于多字节字符,因此您仍然需要求助于 mb 扩展名。