Swift读取含印地语、古吉拉特语的xls文件编码问题求助
解决方案:正确读取含非英文字符的XLS文件
你当前的方法错误在于直接把二进制XLS文件当作纯文本读取——XLS是基于OLE2复合文档的二进制格式,并非纯文本流,无论选哪种字符串编码,都无法正确解析其中的印地语、古吉拉特语等非英文字符。
必须使用专门的XLS解析库处理文件的二进制结构,才能正确提取并解码多语言文本。以下是具体实现:
使用Swift封装的XLS解析库(XLSParser)
1. 添加依赖
通过Swift Package Manager或CocoaPods引入XLSParser:
- Swift Package Manager:在Xcode项目的
Package Dependencies中搜索XLSParser并添加 - CocoaPods:在
Podfile中添加pod 'XLSParser',执行pod install
2. 解析代码示例
import XLSParser do { // 读取XLS文件二进制数据 let data = try Data(contentsOf: url) // 初始化解析器并解析文件 let parser = try XLSParser(data: data) // 遍历所有工作表 for sheet in parser.sheets { print("工作表名称:\(sheet.name)") // 遍历每行,提取单元格内容 for row in sheet.rows { let rowContents = row.cells.compactMap { $0.value } print(rowContents.joined(separator: "\t")) } } } catch { print("解析失败:\(error.localizedDescription)") }
原理说明
XLS文件内部以二进制结构存储数据,非英文字符通常以UTF-16或专用编码封装在单元格数据段中。专业解析库会解析这些二进制结构,定位到文本数据并完成正确解码,彻底解决乱码问题。
内容的提问来源于stack exchange,提问作者Vishal Desai
相关产品推荐
相关产品推荐

