mysql - 在输入 SQL 之前如何从 JSON 文件中清除 'emojis'

标签 mysql database emoji masking

我正在从 JSON 文件中获取文本字段并将它们放入 MySQL 数据库中。例如,SQL 不关心表情符号代码\xF0\x9F\x98\x81。尝试将此数据插入行时,它显示“字符串值不正确”。

我有点超出了我的理解范围,但我认为这是表情符号的 UTF-8 代码,在本例中是笑脸。

我使用基于 Java 的 ETL 客户端(Pentaho 的 Spoon)来获取 JSON 数据并将其传递到 MySQL 数据库。

问题是,我不知道如何编写代码来清理它。有了 Pentaho,我可以使用 Java 或 javascript 来尝试解决这个问题。

浏览器中的 JSON 文件似乎呈现表情符号。 Pentaho 似乎将它们全部写为输出文件中的问号(?)...但是,在内部它似乎传递了实际的符号/UTF-8 代码,因此出现错误。

我很困惑,因为基于java的系统只是传递UTF代码'\xF0\x9F\x98\x81'..正确吗?

实际上不,不是,因为 MySQL 很乐意将字符串 '\xF0\x9F\x98\x81' ...插入到任何行中,它不会插入'笑脸'或小人或其他任何东西到一行......那么物理上传递的是什么,我如何用代码解决这个问题? ...有点困惑,也许我需要在这里阅读 UTF-8 。我感觉这里有两个级别的数据......

为了让事情变得更有趣,MS SQL 似乎通过它的 UTF-16 代码来引用该符号(在尝试插入和随后出现错误时)。

问题是,我如何在 java/javascript 中引用这些数据并销毁表情符号?

最佳答案

好吧...这是一个简单的修复...

如果它对其他人有帮助......

我使用了在 Stack Overflow 上其他地方找到的自定义 Java 脚本代码...

var new_custom_fields = custom_fields.replace(/([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g, '')

我相信 javascript 采用 UTF-16 语言,所以是的。这已从 Zendesk 中的一些自由格式字段中删除了表情符号垃圾(遗憾的是,Zendesk 不允许在工单字段中输入掩码,例如订单号)。

关于mysql - 在输入 SQL 之前如何从 JSON 文件中清除 'emojis',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31460639/

相关文章:

sql - 独特的航类组合与总乘客

python - 在python3中找到一个字符串中有一个表情符号

html-email - 通过带有表情符号的 ahk 发送电子邮件会产生问题

php - MYSQL从表中选择并从另一个表中计数

mysql - 在 DQL 中加入并计数

php - Mysql 查询连接

mysql - 如何使选择查询在具有 4 列(sno、sname、job、dept)、有 10 条记录的简单表上运行超过 30 分钟?

mysql - 无法确定 WHERE 子句应该是什么

mysql - 故意在 MySQL 中制造超时和死锁错误

不拆分表情符号的 JavaScript 子字符串