Snowflake无法显示/解析Unicode字符\u0089的问题咨询
解决方案
问题根源
你遇到的是编码映射错误:千分号‰的正确Unicode码位是\u2030(十进制8240),而你存储的\u0089是C1控制字符集的保留字符,对应ISO-8859-1单字节编码下的137号字节。源JSON摄入时没有指定正确的编码规则,直接把ISO-8859-1的字节值当成了Unicode码点存储,才会出现显示异常。你测试的编码137转回Unicode错误、浏览器显示占位符,本质都是因为拿到的是控制字符,没有做编码转换。
修复方案
临时查询展示修复
查询时直接替换错误字符即可正常显示千分号:
SELECT REPLACE(your_json_column:Units::STRING, CHR(137), CHR(8240)) AS Units FROM your_table;
如果有多款同类型的ISO-8859-1编码映射错误,可以批量转码:
SELECT CONVERT(your_json_column:Units::STRING, 'UTF-8', 'ISO-8859-1') AS Units FROM your_table;
根源修复
后续摄入JSON数据时,在COPY INTO或数据加载语句中指定编码参数,直接把源端的单字节编码转成正确的UTF-8存储:
COPY INTO your_table FROM @your_stage FILE_FORMAT = (TYPE = 'JSON' ENCODING = 'ISO-8859-1');
内容的提问来源于stack exchange,提问作者NZ Scotty
相关产品推荐
相关产品推荐

