Доброе утро!
Некоторое время я пытался внедрить смайлики в свои приложения, но у меня много трудностей. Я уже протестировал несколько решений inte rnet, но ни одно из них не оказалось эффективным.
Я постараюсь подробно описать все, что делаю:
- Я использую Classi c ASP и MySQL в версиях 5.6.40-84.0-log и 5.6.26-log .
- Приложение размещено на Plesk Windows (я пробовал запустить локально, то же самое касается базы данных). Страницы Notepad ++ уже были протестированы в
UTF-8
и UTF8 without BOM
. - В HTML
<head>
есть <meta charset = "utf-8">
. <form>
имеет тег accept-charset="UTF-8"
. - ASP имеет
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
, Response.CodePage=65001
, Response.LCID=1060
и Response.Charset="utf-8"
.
Теперь о проблемах:
В обеих версиях MySQL, когда я меняю COLLATE
на utf8mb4_unicode_*
или utf8mb4_bin
, он автоматически возвращается к utf8mb4_0900_ai_ci
.
В версии 5.6.40-84.0-log , если я зарегистрирую смайлики непосредственно в базе данных, они будут похожи на ??????????????
.
В версии 5.6.26-log , если я зарегистрируюсь непосредственно в базе данных, возвращается ошибка:
Executing:
INSERT INTO `db`.`table` (` emoji`) VALUES ('tion 123 ????? ão');
Operation failed: There was an error while applying the SQL script to the database.
ERROR 1366: 1366: Incorrect string value: '\ xF0 \ x9F \ x98 \ x80 \ xF0 \ x9F ...' for column 'emoji' at row 1
SQL Statement:
INSERT INTO 'db'. 'Table' ('emoji') VALUES ('tion 123 ????? ão')
В этой же версии при регистрации через страницу, используя SET NAMES 'utf8mb4'
или SET NAMES' utf8'
в ODB C строка подключения, возвращается следующая ошибка:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[MySQL] [ODBC 3.51 Driver] [mysqld-5.6.22] Incorrect string value: '\ xE7 \ xE3o' for column 'field' at row 1
EDIT 1: Когда я обращаюсь к SHOW SESSION VARIABLES LIKE 'character_set%';
и SHOW SESSION VARIABLES LIKE "%collation%";
базе данных, он возвращает следующие результаты :
![enter image description here](https://i.stack.imgur.com/VUdvZ.jpg)
Спасибо!
* 1 079 * Перевод с помощью Google Translate (rsrs)