在亚马逊运营中,SKU(Stock Keeping Unit,库存单位)是管理商品的重要标识。然而,某些不可见字符(如零宽空格、控制字符等)可能会导致 SKU 录入失败、数据解析错误,甚至影响库存同步。
本文将列出亚马逊 SKU 禁止使用的不可见字符,并提供 C# 代码,帮助卖家自动检测并清理这些非法字符,确保 SKU 合规。
1. 为什么亚马逊 SKU 不能使用不可见字符?
亚马逊的 SKU 系统要求字符必须是可打印、无歧义的。不可见字符(如零宽空格、特殊控制符)虽然肉眼不可见,但可能导致:
- SKU 录入失败(亚马逊系统拒绝)
- 库存同步错误(FBA 库存匹配失败)
- 订单处理异常(影响自动配送)
因此,卖家必须确保 SKU 仅包含字母、数字、短横线(-)、下划线(_)等安全字符。
2. 亚马逊 SKU 禁止使用的不可见字符列表
字符名称 | Unicode 编码 | 说明 |
---|---|---|
零宽空格 (ZWSP) | 0x200B | 无宽度,但影响文本处理 |
零宽非连接符 (ZWNJ) | 0x200C | 阻止字符连写(如阿拉伯语) |
零宽连接符 (ZWJ) | 0200D | 强制字符连写(如 Emoji 组合) |
不间断空格 (NBSP) | 0x00A0 | 类似空格,但不会自动换行 |
行分隔符 | 0x2028 | 影响文本换行 |
段落分隔符 | 0x2029 | 影响段落分割 |
BOM (零宽无内容字符) | 0xFEFF | 文件开头可能隐藏的字符 |
各种特殊空格 | 0x2000-0x200A | 不同宽度的空格(如 1/4 空格、1/6 空格等) |
ASCII 控制字符 | 0x00-0x1F | 如换行符(\n )、制表符(\t )等 |
3. C# 代码:自动检测非法 SKU 字符
以下代码可帮助检查 SKU 是否包含非法字符:
/// <summary> /// 检查字符是否是亚马逊 SKU 禁用的不可见字符 /// </summary> private static bool IsInvalidSkuChar(char c) { switch (c) { // 零宽字符 case (char)0x200B: // 零宽空格 (ZWSP) case (char)0x200C: // 零宽非连接符 (ZWNJ) case (char)0x200D: // 零宽连接符 (ZWJ) case (char)0xFEFF: // BOM (零宽无内容字符) return true; // 各种特殊空格 case (char)0x00A0: // 不间断空格 (NBSP) case (char)0x1680: // Ogham 空格 case (char)0x2000: // En Quad (恰好空格) case (char)0x2001: // Em Quad (六分之一空格) case (char)0x2002: // En Space (四分之一空格) case (char)0x2003: // Em Space (半空格) casechar)0x2004: // Three-Per-Em Space (1/3 空格) case (char)0x2005: // Four-Per-Em Space (1/5 空格) case (char)0x2006: // Six-Per-Em Space (1/6 空格) case (char)0x2007: // Figure Space (细空格) case (char)0x2008: // Punctuation Space (标点空格) case (char)0x2009: // Thin Space (薄空格) case (char)0x200A: // Hair Space (极薄空格) case (char)0x202F: // Narrow NBSP (窄不间断空格) case (char)0x205F: // Medium Mathematical Space (中间空格) case (char)0x3000: // Ideographic Space (全角空格) return true; // 行/段落分隔符 case (char)0x2028: // 行分隔符 case (char)0x2029: // 段落分隔符 return true; // ASCII 控制字符(0x00-0x1F, 0x7F) case <= (char)0x1F: case (char)0x7F: // DEL 字符 return true; default: return false; } } /// <summary> /// 检查整个 SKU 字符串是否包含非法字符 /// </summary> public static bool ContainsInvalidSkuChars(string sku) { return sku.Any(c => IsInvalidSkuChar(c)); }
使用方法:
string sku = "SKU123\u200B"; // 包含零宽空格的 SKU if (ContainsInvalidSkuChars(sku)) { Console.WriteLine("⚠️ SKU 包含非法字符,请清理"); // 可选:自动清理非法字符 string cleanSku = new string(sku.Where(c => !IsInvalidSkuChar(c)).ToArray()); Console.WriteLine($"清理后的 SKU: {cleanSku}"); }
4. 如何避免 SKU 非法字符问题?
- 手动检查:使用代码检测 SKU 是否合规。
- 自动清理:在生成 SKU 时,移除所有不可见字符。
- 使用标准字符:仅使用
A-Z
、0-9
、-
、_
等安全字符。
总结
亚马逊 SKU 必须避免不可见字符,否则可能导致库存管理问题。本文提供的 C# 代码 可帮助卖家自动检测并清理非法字符,确保 SKU 合规。建议在上传产品前运行检查,避免后续问题!
本文内容来自个人经验总结,如有遗漏,欢迎补充。