使用扩展字符导出(Android/Java)字符串数据,以便导入Excel

使用扩展字符导出(Android/Java)字符串数据,以便导入Excel,java,android,excel,unicode,utf-8,Java,Android,Excel,Unicode,Utf 8,我需要导出包含“度”符号(“\u00B0”)的字符串数据。此数据以UTF-8编码的csv文本文件形式导出。正如预期的那样,度符号在java(unicode)字符串中编码为两个字符(0xC2,0xB0)。将CSV文件导入Excel时,它将显示为大写字母a,带有扬抑重音,后跟度符号 我知道“UTF-8”只支持7位ASCII(作为单个字节),而不支持8位“扩展ASCII”,“US-ASCII”只支持7位ASCII周期 是否有某种方法可以指定编码,从而抑制0xC2前缀字节 我倾向于允许进行正常处理,然后

我需要导出包含“度”符号(“\u00B0”)的字符串数据。此数据以UTF-8编码的csv文本文件形式导出。正如预期的那样,度符号在java(unicode)字符串中编码为两个字符(0xC2,0xB0)。将CSV文件导入Excel时,它将显示为大写字母a,带有扬抑重音,后跟度符号

我知道“UTF-8”只支持7位ASCII(作为单个字节),而不支持8位“扩展ASCII”,“US-ASCII”只支持7位ASCII周期

是否有某种方法可以指定编码,从而抑制0xC2前缀字节

我倾向于允许进行正常处理,然后读取并覆盖文件内容,去掉多余的字节


我真的更喜欢一个更有说服力的解决方案…

Excel假定csv文件位于8位代码页中

要让Excel将csv解析为UTF-8,需要在文件开头添加UTF-8字节顺序标记

编辑:

如果您在西欧或美国,当遇到没有Unicode字节顺序标记的文件时,Excel可能会使用Windows-1252字符集进行解码和编码

由于
0xC2
0xB0
都是合法的Windows-1252字符,Excel将解码为以下内容:

0xC2
=br>
默认情况下,Excel将编码转换为Microsoft标准CP1252。除非另有指示。你应该在使用前使用谷歌,所以。。。谢谢,我不知道字节顺序标记。将其添加到文件开头修复了Excel的奇怪解释问题。它是wierd-Excel将0xC2前缀解释为扩展字符,但将0xB0正确解释为度符号(即,如果没有前缀UTF-8,则需要)。此外,在8位“扩展ASCII”中,0xF8是度符号,因此Excel不会解释为扩展ASCII。这几乎就好像微软在玩弄这些标准……第二个相关的问题——使用UTF-8 BOM前缀,我现在可以导入Excel而不会出现解释上的问题。但是,如果我随后将文件重新保存为“CSV”,Excel不会恢复UTF-8 BOM前缀。它确实提供了将数据存储为UNIICODE“.TXT”文件的帮助(这意味着每个字符有两个字节,每个字符的前缀为0字节)。嗨,我已经更新了我的答案来解释你看到的内容。好了,没有“扩展ASCII”这样的东西。所有流行的8位模式都将度符号编码为0xB0-请参阅。Windows使用UTF-16编码Unicode,因此“Unicode”模式似乎将ASCII字符和基本拉丁字符的前缀设置为
0x00
。用于Unicode字符