Вводить emojis в mysql 5.5

Я хочу ввести тексты, которые у них есть emojis в таблице MySQL. Я увидел, что нуждаются в 4 байт из-за каждого emoji, потому что они приходят в 2 шестнадцатеричных. Тема, что я увидел где-то здесь различные "решения", и ни одна я не функционировала.

Пойди исходи из ошибки:

at java.lang. Thread.run (Ункнаун Соурсе) Caused by: com.genexus. GXRuntimeException: java.sql. SQLException: Incorrect string оцените: '\xF0\x9F\x92\x98\xF0\x9F...' for column 'TweetText' at row 1 at com.mysql.jdbc. SQLError.createSQLException (SQLError.java:1072) at com.mysql.jdbc. MysqlIO.checkErrorPacket (MysqlIO.java:3563) at com.mysql.jdbc. MysqlIO.checkErrorPacket (MysqlIO.java:3495) at com.mysql.jdbc. MysqlIO.sendCommand (MysqlIO.java:1959) at com.mysql.jdbc. MysqlIO.sqlQueryDirect (MysqlIO.java:2113) at com.mysql.jdbc. ConnectionImpl.execSQL (ConnectionImpl.java:2693) at com.mysql.jdbc. PreparedStatement.executeInternal (PreparedStatement.java:2102) at com.mysql.jdbc. PreparedStatement.executeUpdate (PreparedStatement.java:2395) at com.mysql.jdbc. PreparedStatement.executeUpdate (PreparedStatement.java:2313) at com.mysql.jdbc. PreparedStatement.executeUpdate (PreparedStatement.java:2298) at com.genexus.db.driver. GXPreparedStatement.executeUpdate (Ункнаун Соурсе) at com.genexus.db. UpdateCursor.postExecute (Ункнаун Соурсе) at com.genexus.db. DataStoreProvider.execute (Ункнаун Соурсе) at com.genexus.db. DataStoreProvider.execute (Ункнаун Соурсе)

Кто-то знает, как конфигурировать mysql, или client.cfg или какой-то workarround, чтобы ему удаваться ввести в BD emojis??

Упрощенный код был бы нечто похожим, будучи &Tweet переменная типа Бусинесс Компонент в GeneXus и &itemresult tweet, последованный от того, что делает названный API Твиттера:

&Tweet.TweetId=&itemresult.id_str
&Tweet.TweetText=&itemresult.text
&Tweet.Save()
commit

Большое спасибо заранее

0
задан 15.03.2016, 15:28
2 ответа

Видимо "character set" по умолчанию в MySQL он utf8 что выносит символы UNICODE длины между 1 и 3 байт, которым emoji не вынесены этой конфигурацией.

Начиная с MySQL 5.5.3, присоединился новый "character set" имени utf8mb4 который да он выносит emoji.

Упоминая документацию MySQL (на английском):

The character set named utf8 используй в maximum of three байт per character and contains only BMP characters. Эксперт of MySQL 5.5.3, the utf8mb4 character set используй в maximum of four байт per character [...]

Перевод:

Набор символов utf8 используй трехбайтовый максимум из-за символа и он содержит только символы BMP. Начиная с MySQL 5.5.3, набора символов utf8mb4 используй четырехбайтовый максимум из-за символа [...]

Докуда я знаю GeneXus он не выносит эту конфигурацию в момент создания базы данных, но ты можешь тестировать один ALTER DATABASE чтобы менять эту конфигурацию после созданная (видеть документацию MySQL, на английском).

2
ответ дан 24.11.2019, 14:44
  • 1
    Привет Рамы спасибо x твой ответ, я поместил ему Charset: utf8mb4 в таблицу в cuesti и # 243; n. И я cambi и # 243; collation в utf8mb4_general_ci tambi и # 233; n. Prob и # 233; вводить и отпускает мне ту же ошибку: ((Он и # 237; x ах и # 237; что нужно посылать его conexi и # 243; n alg и # 250; n пара и # 225; метр, но мне не удается понять, чем властвовать, ни как..... – bcamargo75 15.03.2016, 17:24

Я решил тему, я перехожу к тому, чтобы рассказывать им как:

Я обновил CHARACTER SET и COLLATE базы данных utf8 в utf8mb4. Случается, что MySQL использует 3 байт, чтобы хранить символы utf8 и 4 байт для catacteres utf8mb4, так что последний да выносит все байт emojis. Также, я обновил CHARACTER SET и COLLATE значимых подмостков.

Я нашел объяснение этого шага в http://andy-carter.com/blog/saving-emoticons-unicode-from-twitter-to-a-mysql-database

Потом я увидел, что использовал книжный магазин mysql-connector-java-5.1.11-bin.jar, который приносит Хенексус Эво3 и назначенный по умолчанию Разрыв и это копирует в WEB-INF/lib tomcat. Я загрузил более настоящую версию: mysql-connector-java-5.1.38-bin.jar и он был решен.

1
ответ дан 24.11.2019, 14:44
  • 1
    Actualic и # 233; твой ответ для того, чтобы был автомобиль содержавшим. А именно, что текст из-за s и # 237; только смогите объяснять c и # 243; mo решать проблему. Помни, что ссылки или соединения - это, чтобы добавлять informaci и # 243; n добавочный или поддерживать то, что показывается в ответе, ссылок нет ответ. Это осуществляется, потому что ссылки могут умирать (если это ссылки во внутренний сайт, вопросы / ответы могут быть удаленными (!) эксперт и # 237; что забота). Также, edit и # 233; немного ortograf и # 237; в и gram и # 225; костариканская. –  23.03.2016, 07:07

Теги

Похожие вопросы