Перейти к содержанию

Как исправить текстовые поля


Рекомендуемые сообщения

Я только что понял, что все настраиваемые текстовые поля показывают странные символы в базе данных.

Например, «João» получается как «Jo\u00e3o».

Я думаю, что это связано с system\Text\Parser.php, но я не уверен, что нужно изменить, чтобы символы отображались правильно.

Настройки базы данных выглядят правильно:

chrome_rfgRTKxNS5.png.d16ccc68b6ee42f470a6bd90827b27f8.png

Изменено пользователем BlackShot
Ссылка на комментарий
Поделиться на другие сайты

Seems to be something related with JSON_UNESCAPED_UNICODE and json_encode().

Ссылка на комментарий
Поделиться на другие сайты

1 hour ago, Desti said:

U about custom profile fields? 

That's right! They use some kind of logic I still don't understand apparently.

Ссылка на комментарий
Поделиться на другие сайты

2 hours ago, Desti said:

standard setup, no problem

image.png.fddaa5ceaa8edc08137a2d43edb69599.png

Пробовали ли вы создать пользовательское *текстовое* поле в Nexus/Commerce? Я получил этот ответ от кого-то:

Quote

Прежде всего, \u00e3 не генерируется MySQL. Однако он может быть сгенерирован функцией PHP json_encode(). Обязательно используйте JSON_UNESCAPED_UNICODE во втором аргументе этой функции.

Для использования в таблицах MySQL я предпочитаю, чтобы настройки подключения и сервера были постоянно установлены на utf8mb4, чтобы данные Unicode просто появлялись и исчезали без преобразования.

 

Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, BlackShot сказал:

*текстовое* поле в Nexus/Commerce?

image.png.3b96b2627d032db25cde0399b32518a4.png

Ссылка на комментарий
Поделиться на другие сайты

18 hours ago, Desti said:

image.png.3b96b2627d032db25cde0399b32518a4.png

Mine doesn't have that cm prefix. Maybe it's an older/newer version? Anyway, how about core_pfields_data (pf_content) or nexus_support_fields (sf_extra)?

image.png.09430ed3cf5137a467386c5e40077d58.png

Ссылка на комментарий
Поделиться на другие сайты

system/CustomField/CustomField.php - 

Search json_encode and edit string

$values[ static::$databasePrefix . $k ] = ( $k === 'content' ? json_encode( $_value, JSON_UNESCAPED_UNICODE ) : $_value );

All custom field (and nexus too) must work properly

Изменено пользователем Desti
Ссылка на комментарий
Поделиться на другие сайты

18 hours ago, Desti said:

system/CustomField/CustomField.php - 

Search json_encode and edit string

$values[ static::$databasePrefix . $k ] = ( $k === 'content' ? json_encode( $_value, JSON_UNESCAPED_UNICODE ) : $_value );

All custom field (and nexus too) must work properly

Aha! Works perfectly now - you're a legend! Why do you think IPS didn't have that added in the first place? You think they just missed it, didn't consider their international userbase, or does it affect performance/security? 🤔

Ссылка на комментарий
Поделиться на другие сайты

I suspect that for them the great revelation was the existence of other languages :)

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...