在Coldfusion中使用Unicode字符解析XML

时间:2016-06-01 12:16:28

标签: xml parsing unicode coldfusion

我使用cfhttp连接到外部API,返回的数据采用XML格式。我无法控制API或其返回的格式。

当返回数据时,我遍历它并将cfquery插入到我自己的MySQL数据库中,该数据库具有UTF8字符集。

但是,有些数据似乎有unicode字符(看起来应该是£(磅)符号,但是当我cfdump XMLParsed数据时,它显示为带有?内部的菱形)。我附上了一个裁剪的截图,显示了cfdump的一部分,显示了这一点;

enter image description here

问题是cfquery插入 - 当它到达那些字符时,它会返回此错误;

执行数据库查询时出错。

字符串值不正确:'\ xEF \ xBF \ xBD10 ...'代表第1行的'voucherTitle'

我已尝试在cfhttp调用中设置charset,但得到相同的结果。

有没有什么方法可以对这些进行编码/解码,或者完全修剪它们(无论如何都要进一步编辑数据,所以手动添加正确的符号不是一个大问题。)

1 个答案:

答案 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

相关问题