在 Excel 中,我尝试导入(使用数据 > 导入)包含中文字符的 CSV 文件。这些字符以 Unicode 表示数字字符引用(NCR);例如 香辣猪。虽然我已将“文件来源”设置为“65001:Unicode(UTF-8)”,但似乎没有任何作用。
请注意:
香辣猪应该显示为香辣猪
以下是导入屏幕的截图。您可以看到“产品标题”列中有 Unicode 中的中文字符,但这些字符无法正确显示。我还尝试了几乎所有其他 Unicode 和中文相关的“文件来源”,但都没有成功。
请帮忙,如何在 Excel 中成功导入包含 Unicode 中文字符的 CSV 文件?
答案1
您的文件可能使用标准 ANSI/ASCII 字符代码进行编码。它不是在 CSV 文件中以字节级别对 UNICODE 字符进行编码,而是实际上将单个 unicode 字符代码表示为一系列字母数字字符(即数字字符串拼写出来Unicode 字符编号)。这称为数字字符引用(NCR)通常用于 HTML 等标记语言,以便与不支持 Unicode 的浏览器或系统向后兼容。“&#”标识符表示 NCR 的开始。
据我所知,Excel 中没有本机支持将包含 NCR 的字符串转换为 unicode,但您可以使用 UNICHAR 函数将单个数字转换为 unicode,例如:
=UNICHAR(39321)&UNICHAR(36771)&UNICHAR(29482)
如何在 Excel 中将数字字符引用字符串转换为 UNICODE
如果您有 Excel 365(需要 SEQUENCE 和 TEXTJOIN),则可以将 A1 中的所有 NCR 字符串转换香辣猪
为 A2 中的 unicode 字符串:
=TEXTJOIN("",,UNICHAR(MID(A1,SEQUENCE(INT(LEN(A1)/8),,3,8),5)))
假设每个代码长度正好为 8 个字符(“&#” + 5 个数字 + “;”)。
对于旧版本的 Excel,你可以使用
=SUBSTITUTE(SUBSTITUTE(REPLACE(A1,1,1,"="),"#","UNICHAR("), ";",")")
这将生成所需的公式作为文本字符串。复制结果并仅粘贴“作为值”。编辑单元格并按 Enter 以评估单元格公式并生成最终的 UNICODE 文本。
答案2
此答案是出于“历史”原因而提供的,仅用于教育那些可能难以将不同字符集的 csv 文件导入 Excel 的人。以下是一些可以尝试的方法
尝试在记事本或其他更高级的文本编辑器中打开它。即使字符无法正确显示,也可以“另存为”文件并更改字符编码(例如 utf8、utf16 等),然后查看 Excel 如何处理这些字符。
首先尝试在 Google Sheets 或 Libre Calc 中打开文件,然后从那里保存并导出为 Excel .xlsx 文件格式。
Excel 使用本地计算机的语言和区域设置来确定如何导入 csv。在 Windows 中搜索区域和语言设置控制面板(不是新的“设置”)。将您的语言设置为与文件相同的语言。还要检查高级设置,例如分隔符、小数分隔符、日期格式等 - 这些必须与我们的 csv 文件的格式相匹配。(注意:记住键盘快捷键如何将系统恢复为第一语言可能是一个好主意。或者更好的方法是启用语言栏并将 CSV 文件语言添加为第二语言,这样您就可以使用左 Shift+Alt 或 Windows 按钮+空格键轻松地在语言之间切换。