如何确定excel文件的字符编码? [复制]
Posted
技术标签:
【中文标题】如何确定excel文件的字符编码? [复制]【英文标题】:How can I determine the character encoding of an excel file? [duplicate] 【发布时间】:2012-10-25 11:17:52 【问题描述】:可能重复:Excel to CSV with UTF8 encoding
场景:我有一个包含大量全球客户数据的 excel 文件。我不知道创建文件时使用了什么编码。
问题:如何确定 excel 文件中使用的字符编码,以便将其正确导入到其他软件中?
【问题讨论】:
我猜你的问题已经在superuser.com/questions/280603/…讨论和回答了 @JüriRuut 不是真的,这个问题是相反的。我也想要一个规范的答案,所以对这个问题 +1。 @deceze: 那么它会是“从 Excel 导出数据”? @JüriRuut 我假设他的意思是“使用某种编程语言中的某个库读取 .xls 文件”。那么这一切都是有道理的......山姆,如果我错了,请纠正这个假设。 @deceze - 你很准!为了正确导入文件,我首先需要知道它最初是如何编码的。如果您导入它并假设使用了某个字符集,您最终可能会得到错误的数据 - 某些字符会意外丢失或被其他字符替换。 【参考方案1】:对于 Excel 2010,它应该是 UTF-8。 MS指导:http://msdn.microsoft.com/en-us/library/bb507946:
“SpreadsheetML 文档的基本文档结构由 Sheets 和 Sheet 元素组成,它们引用工作簿中的工作表。为每个工作表创建一个单独的 XML 文件。例如,具有两个工作表的工作簿的 SpreadsheetML名称 MySheet1 和 MySheet2 位于 Workbook.xml 文件中,如下代码示例所示。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<workbook xmlns=http://schemas.openxmlformats.org/spreadsheetml/2006/main xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<sheets>
<sheet name="MySheet1" sheetId="1" r:id="rId1" />
<sheet name="MySheet2" sheetId="2" r:id="rId2" />
</sheets>
</workbook>
工作表 XML 文件包含一个或多个块级元素,例如 SheetData。 sheetData 表示单元格表并包含一个或多个 Row 元素。一行包含一个或多个 Cell 元素。每个单元格都包含一个代表单元格值的 CellValue 元素。例如,工作簿中第一个工作表的 SpreadsheetML,在单元格 A1 中只有值 100,位于 Sheet1.xml 文件中,如下面的代码示例所示。
<?xml version="1.0" encoding="UTF-8" ?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<sheetData>
<row r="1">
<c r="A1">
<v>100</v>
</c>
</row>
</sheetData>
</worksheet>
"
检测细胞编码:
https://metacpan.org/pod/Spreadsheet::ParseExcel::Cell
http://forums.asp.net/t/1608228.aspx/1
【讨论】:
你应该如何为给定的 Excel 文件找到这些 XML 文件? @user5359531: http://***.com/questions/8984254/how-to-view-the-xml-form-of-an-excel-file 我想知道这是否仍然是确定 Excel 工作表字符编码的准确方法,因为我有一个包含仅由 UTF-16 支持的国际字符的工作表,但 XML 显然将其标记为encoding="UTF-8"
。这种编码是指除了工作表中包含的文本之外的其他内容吗?
@user5359531 “我有一张包含仅 UTF-16 支持的国际字符的工作表” - 如果我理解正确,UTF-8 和 UTF-16(以及 UTF-32)都支持所有 unicode字符,他们只是使用不同的编码来做到这一点。 (UTF-8 使用 1、2、3 或 4 个字节,UTF-16 使用 2 或 4 个字节,而 UTF-32 始终使用 4 个字节)。以上是关于如何确定excel文件的字符编码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Python ASCII 编解码器在写入 CSV 期间无法编码字符错误