EXCEL打开CSV文件乱码的解决方法
用C#程序通过StreamWriter导出字符串,导出生成txt文本文件,用记事本打开正常,改成csv格式,用excel打开乱码,且不能正确识别分列。
后用记事本打开,把编码从utf-8改成ansi之后,就可以正确识别分列和没乱码了。
【故障现象描述】
从网页上导出数据文件存储为CSV格式的文件,使用记事本打开文字显示没有问题,使用EXCEL打开出现乱码的情况。
【故障原因分析】
此种情况一般是导出的文件编码的问题。在简体中文环境下,EXCEL打开的CSV文件默认是ANSI编码,如果CSV文件的编码方式为utf-8、Unicode等编码可能就会出现文件乱码的情况。
【解决方法】
(1)设置office语言环境(以office 2003为例):
开始菜单-Microsoft office- Microsoft office工具- Microsoft office 2003语言设置,将Microsoft office应用程序默认方式的语言设为“中文(简体)”,这也是office 2003的默认设置。
(2)使用记事本打开CSV文件,文件-另存为,编码方式选择ANSI:
(3)保存完毕后,用EXCEL打开这个文件就不会出现乱码的情况:
【编码方式讲解】
(1)ANSI编码
不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。
这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。
在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。 当然对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表1个字符。这一点是ASNI编码与Unicode编码之间最大也最明显的区别。例如上面演示的文件中英文字母和数字并没有出现乱码的情况。
(2)Unicode编码
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
(3)UTF-8编码
UTF-8是UNICODE的一种变长字符编码又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如日文,韩文)。
分享到:
相关推荐
### 汉字的编码与字模点阵详解 #### 引言 汉字编码与字模点阵是中文计算机处理的基础。随着信息技术的发展,对于汉字的处理能力也日益提升,从最初的简陋显示到如今的高质量图形化界面,汉字编码与字模点阵的运用...
本文档《web编码问题小结》详细总结了Java开发中可能遇到的各种编码问题及其解决方案,覆盖了数据库、Cookie、静态页面、POST与GET请求等多种场景。 #### 数据库的中文问题 数据库的中文问题主要源于数据库与应用...
Java中的中文编码问题是一个复杂而常见的议题,尤其是在跨平台开发中。本文主要涵盖了Java处理中文字符编码的关键点,包括Java虚拟机(JVM)的初始配置、编译过程中的编码设置、文件读写操作、XML文件处理以及字符串...
JavaScript是一种广泛用于网页和网络应用的脚本语言,它的编码模式和最佳实践对于编写高效、可维护的代码至关重要。以下是一些在JavaScript编程中常见的基本编码模式和技巧: 1. **变量定义**: - 通常建议一次性...
汉字编码问题总结 GB2312-80 编码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集--基本集》,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用此编码。GB2312 收录...
在JavaServer Pages (JSP) 开发中,正确设置编码属性对于确保文本数据在不同环节间的正确处理至关重要。本文将详细解析JSP中影响编码的属性及其设置,并探讨它们之间的相互影响和作用顺序。 首先,我们需要理解几个...
3. 重新排列信源:按概率大小从大到小排序,以便后续处理。 4. 累加概率:将概率从小到大累加,形成累加概率序列,便于计算码长。 5. 计算码长`l`:利用香农公式,根据每个符号的概率计算出相应的码长。对于概率为`p...
本课程主要探讨了数据值数据的编码,特别是数制间的转换,这对于理解和使用计算机系统至关重要。以下是对相关知识点的详细说明: 1. **数制**: 数制是一种表示数字的系统,它定义了数字的构成方式。常见的数制有...
拆分大函数为小函数,每个函数专注于一项任务。 13. **遵循一致的缩进**:使用相同数量的空格或制表符进行缩进,以便代码对齐,提高可读性。 14. **避免全局变量**:全局变量可能导致命名冲突和难以追踪的问题,...
信道编码结课论文主要探讨了基于MATLAB的通信系统仿真,特别关注信道编码对通信系统性能的影响。本文由通信工程专业的学生崔校通撰写,旨在深入理解信道编码的理论及其在实际中的应用。 信道编码是通信系统中的关键...
全书分7章,在介绍了有关信息度量的基础上,重点讨论了信道容量、率失真函数,以及无失真信源编码、限失真信源编码、信道编码和密码学中的理论知识及其实现原理在各章的最后还附有内容小结和大量习题,书后附有部分...
本复习小结内容主要针对信息论与编码课程的期末复习,涵盖了绪论部分和信源与信息熵两个重要章节的知识点。 首先,我们要明确信息、消息、信号三个概念之间的区别。信息是事物状态或者存在方式的不确定性描述;消息...
请输入树的结点数:5 请输入各结点的权值: 3 2 4 1 5 ``` 输出结果: ``` 符号 权值 赫夫曼编码 A 3 00 B 2 01 C 4 10 D 1 110 E 5 111 ``` 在上面的结果中,我们可以看到每个符号的权值和对应的赫夫曼编码。...
#### 小结 通过以上内容,我们对Java的基础知识有了更深入的理解。了解这些基础知识对于编程非常重要,特别是对于初学者来说。掌握了这些概念后,你可以更好地理解和编写Java代码,同时也能避免一些常见的错误和...
小结 MySQL 的默认编码是 Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为 gbk 或者 utf8。我们可以使用 `SET NAMES` 命令修改数据库的编码方式,并使用 `SELECT` 命令显示数据表中的内容。
JAVA IO流小结 JAVA IO流是指Java语言中用来实现输入/输出操作的机制。IO流是指任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象。他屏蔽了实际的I/O设备处理数据的细节。 一、流的定义和分类 流是...
观看慕课第三章数据表示实验 1、汉字编码实验 在 data-EduCoder-3-23.circ 中完成国标转区位码实验和汉字显示 实验。 观看慕课第五章存储系统设计 1、存储系统实验基本框架 2、汉字字库存储扩展实验(字扩展) 3、...