我使用cfhttp连接到外部API,返回的数据采用XML格式。我无法控制API或其返回的格式。
当返回数据时,我遍历它并将cfquery插入到我自己的MySQL数据库中,该数据库具有UTF8字符集。
但是,有些数据似乎有unicode字符(看起来应该是£(磅)符号,但是当我cfdump XMLParsed数据时,它显示为带有?内部的菱形)。我附上了一个裁剪的截图,显示了cfdump的一部分,显示了这一点;
问题是cfquery插入 - 当它到达那些字符时,它会返回此错误;
执行数据库查询时出错。
字符串值不正确:'\ xEF \ xBF \ xBD10 ...'代表第1行的'voucherTitle'列
我已尝试在cfhttp调用中设置charset,但得到相同的结果。
有没有什么方法可以对这些进行编码/解码,或者完全修剪它们(无论如何都要进一步编辑数据,所以手动添加正确的符号不是一个大问题。)
答案 0 :(得分:1)
更新:从MySQL 5.5.3开始,还有UTF8mb4 which is often recommended over UTF8。
(来自评论)
我记得something similar on another thread。使用INFORMATION_SCHEMA.COLUMNS视图仔细检查该列的排序规则和字符集:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'
如果它不是UTF-8,您可以使用ALTER TABLE命令更改它。根据需要修改列大小M
。
ALTER TABLE YourTableName
MODIFY YourColumnName VARCHAR(M)
CHARACTER SET utf8;
NB:如果数据很重要,请在应用任何修改之前始终备份表格。
另请参阅:11.1.15 Character Sets and Collations Supported by MySQL