You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake使用PUT上传含特殊字符CSV时UTF-8编码异常问题解决咨询

解决Snowflake读取UTF-16编码CSV文件的乱码问题

从你给出的错误信息里的0xFF0xFE字节序列可以判断,你的CSV文件是UTF-16 LE编码(带字节顺序标记BOM),而Snowflake默认的文件格式使用UTF-8编码解析,这就是导致UTF-8验证错误、特殊字符丢失和出现意外空格的核心原因。

解决方案:修改文件格式指定正确编码

你只需要在文件格式中明确指定编码为UTF16,Snowflake会自动识别UTF16的BOM并正确解析文件内容:

CREATE OR REPLACE FILE FORMAT demo_file_format 
TYPE = 'CSV' 
FIELD_DELIMITER = ',' 
ENCODING = 'UTF16';

验证查询

用修改后的文件格式查询阶段内容:

SELECT C.$1 FROM @demo_stage (file_format => 'demo_file_format') C;

这样就能正确读取包含特殊字符(比如Compañía里的ñ)的字段,不会出现乱码和多余空格。

为什么之前的方法无效?

  • 当你设置VALIDATE_UTF8 = FALSE时,Snowflake会跳过UTF-8格式校验,但它仍然以UTF-8的方式解析文件。由于UTF16每个字符占用2个字节(比如字母C在UTF16LE中是0x43 0x00),解析时会把第二个空字节当成独立的UTF-8字符,表现为空格;而像ñ这类特殊字符的UTF16字节序列在UTF-8中是无效的,所以会显示为�。

内容的提问来源于stack exchange,提问作者Devom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:54:07