我正在从 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/