从 Excel 导出到 CSV 时,会将日文字符替换为 ???,尽管 Windows、Office 区域设置为日本/日语

从 Excel 导出到 CSV 时,会将日文字符替换为 ???,尽管 Windows、Office 区域设置为日本/日语

我正在将包含日语字符的 excel 文件 (Excel 2016) 导出到 CSV。(注意:我没有导出到提供的 CSV UTF-8)。在此过程中,所有日语字符都被替换为“?”

我的 Windows/Office 区域设置是日本/日语并且 Windows/office 语言/格式都是日语。

我知道 Excel 使用代码页以特定编码保存 CSV 文件。我的理解是这应该是 Shift-JIS(作为日语语言环境的默认编码)。如果是这样,为什么会丢失信息并被“?”替换?

Excel 尝试以什么编码保存 CSV???

(仅供参考:如果我尝试打开 CSV,则 Excel 默认会按预期尝试以 Shift-JIS 932 格式打开 CSV)

注意:我知道使用 UTF-8 的解决方法。我感兴趣的是了解上述行为,而不是解决方法

谢谢

答案1

Excel 处理 CSV 编码的能力一直很差。

将文档导出为逗号分隔的 CSV 不会使用您所在地区的代码页,而是将字符保存为 ASCII。无法以这种方式表示的字符将导出为问号。只有 ASCII 范围为 0 到 127 的字符才能保证正确导出。

原因可能是 Excel 中的这段代码是在 Windows 支持 Unicode 之前编写的,但这只是猜测。Office 中充满了此类补丁,我们需要使用有效的代码。

答案2

啊,当地的乐趣。

在 Windows 区域设置选项中隐藏着一个模糊的设置,它可能是罪魁祸首:非 Unicode 程序的语言

笔记:更改此设置可能需要管理员权限。如果您的机器被锁定,您可能需要与当地管理员联系。

以下是如何在 Windows 10 中找到它。设置名称多年来一直没有改变,但微软一直在移动它,所以如果你正在运行更早的版本,你必须通过其他方式找到它。

  • 打开开始菜单和类型地区
  • 打开区域和语言设置
  • 点击右侧的蓝色其他日期、时间和区域设置文本。

或者,

  • 打开开始菜单和类型控制面板
  • 打开控制面板。
  • 双击地区

一旦你回顾遗产地区设置:

  • 点击行政的标签。
  • 你应该看到两个选项,欢迎屏幕和新用户帐户, 和非 Unicode 程序的语言。 点击更改系统区域设置第二部分中的按钮。
  • 选择日语(日本)从下拉菜单中。

默认情况下,在美国销售的 Windows 系统将此设置为美国英语)或 Windows 内部区域十进制数 1033。(请参阅各种在线列表,例如这个用于区域设置代码。)这相当于 Excel 在保存为 CSV 时使用 ASCII 编码,这对于日语等高字节语言来说自然效果不太好。

如果你将其更改为日语(日本)或区域设置编号 1041,Excel 将使用 Shift-JIS 导出,您将能够在文本编辑器中打开 CSV 导出并查看非字形文本。

FWIW,我的 Win10 区域设置设置为日语(日本),当我将包含日语内容的 Excel 文件保存为CSV(MS-DOS)并在 Notepad++ 中打开它,我在右下角的状态栏上看到编码为Shift-JIS,而且日文清晰易读。

相关内容