

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 多字节字符加载错误
<a name="multi-byte-character-load-errors"></a>

带有 CHAR 数据类型的列仅接受单字节 UTF-8 字符（字节值最大为 127，即十六进制的 7F），它也是 ASCII 字符集。VARCHAR 列接受多字节 UTF-8 字符，最多四个字节。有关更多信息，请参阅 [字符类型](r_Character_types.md)。

如果加载数据中的某一行包含对列数据类型无效的字符，则 COPY 将返回一个错误并在 STL\$1LOAD\$1ERRORS 系统日志表中记录一行，错误编号为 1220。ERR\$1REASON 字段包含无效字符的十六进制字节序列。

修复加载数据中的无效字符的替代方法是在加载过程中替换无效字符。要替换无效的 UTF-8 字符，请在 COPY 命令中指定 ACCEPTINVCHARS 选项。如果设置了 ACCEPTINVCHARS 选项，那么指定的字符将替换代码点。如果未设置 ACCEPTINVCHARS 选项，Amazon Redshift 会接受这些字符作为有效的 UTF-8。有关更多信息，请参阅 [ACCEPTINVCHARS](copy-parameters-data-conversion.md#acceptinvchars)。

以下代码点列表是有效的 UTF-8，如果未设置 ACCEPTINVCHARS 选项，COPY 操作不会返回错误。但是，这些代码点是无效字符。您可以使用 [ACCEPTINVCHARS](copy-parameters-data-conversion.md#acceptinvchars) 选项用指定的字符替换代码点。这些代码点的值范围为 `0xFDD0` 到 `0xFDEF`，最高值为 `0x10FFFF`，以 `FFFE` 或 `FFFF` 结尾：
+ `0xFFFE`, `0x1FFFE`, `0x2FFFE`, …, `0xFFFFE`, `0x10FFFE`
+ `0xFFFF`, `0x1FFFF`, `0x2FFFF`, …, `0xFFFFF`, `0x10FFFF`

以下示例显示了 COPY 尝试将 UTF-8 字符 `e0 a1 c7a4` 加载到 CHAR 列中时的错误原因。

```
Multibyte character not supported for CHAR 
(Hint: Try using  VARCHAR). Invalid char: e0 a1 c7a4
```

如果错误与 VARCHAR 数据类型相关，则错误原因将包含错误代码和无效的 UTF-8 十六进制序列。以下示例显示了 COPY 尝试将 UTF-8 `a4` 加载到 VARCHAR 字段中时的错误原因。

```
String contains invalid or unsupported UTF-8 codepoints. 
Bad UTF-8 hex sequence: a4 (error 3)
```

下表列出了 VARCHAR 加载错误的描述和建议解决方法。如果出现了以下错误之一，请将该字符替换为有效的 UTF-8 代码序列或删除该字符。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/redshift/latest/dg/multi-byte-character-load-errors.html)