导出 (Android/Java) 个带有扩展字符的字符串数据以导入 Excel
Export (Android/Java) string data in with extended characters for import into Excel
我需要导出包含 'degrees' 符号(“\u00B0”)的字符串数据。此数据导出为采用 UTF-8 编码的 csv 文本文件。正如预期的那样,度数符号在 java (unicode) 字符串中被编码为两个字符 (0xC2, 0xB0)。当 CSV 文件导入 Excel 时,它显示为带有抑扬音符的大写字母 A,后跟度数符号。
我知道"UTF-8"只支持7位ASCII(作为一个字节),不支持8位"extended ASCII","US-ASCII"只支持7位ASCII周期。
是否有某种方法可以指定编码以抑制 0xC2 前缀字节?
我倾向于允许进行正常处理,然后读取并覆盖文件内容,去除多余的字节。
我真的更喜欢 eloquent 解决方案...
Excel 假定 csv 文件位于 8 位代码页中。
要Excel将您的 csv 解析为 UTF-8,您需要在文件开头添加 UTF-8 字节顺序标记。
编辑:
如果您在西欧或美国,当遇到没有 Unicode 字节顺序标记的文件时,Excel 可能会使用 Windows-1252 字符集进行解码和编码。
由于 0xC2
和 0xB0
都是合法的 Windows-1252 字符,Excel 将解码为以下内容:
0xC2
= Â
0xB0
= °
我需要导出包含 'degrees' 符号(“\u00B0”)的字符串数据。此数据导出为采用 UTF-8 编码的 csv 文本文件。正如预期的那样,度数符号在 java (unicode) 字符串中被编码为两个字符 (0xC2, 0xB0)。当 CSV 文件导入 Excel 时,它显示为带有抑扬音符的大写字母 A,后跟度数符号。
我知道"UTF-8"只支持7位ASCII(作为一个字节),不支持8位"extended ASCII","US-ASCII"只支持7位ASCII周期。
是否有某种方法可以指定编码以抑制 0xC2 前缀字节?
我倾向于允许进行正常处理,然后读取并覆盖文件内容,去除多余的字节。
我真的更喜欢 eloquent 解决方案...
Excel 假定 csv 文件位于 8 位代码页中。
要Excel将您的 csv 解析为 UTF-8,您需要在文件开头添加 UTF-8 字节顺序标记。
编辑:
如果您在西欧或美国,当遇到没有 Unicode 字节顺序标记的文件时,Excel 可能会使用 Windows-1252 字符集进行解码和编码。
由于 0xC2
和 0xB0
都是合法的 Windows-1252 字符,Excel 将解码为以下内容:
0xC2
= Â
0xB0
= °