请选择
进入手机版
|
继续访问电脑版
学习路径
视频资源
开发者学堂
悬赏
活动
招聘
登录
/
注册
搜索
AI搜索
SpreadJS
活字格
Wyn
GcExcel Java
公开课
新手入门
新手训练营
技术认证
好友
帖子
收藏
勋章
设置
我的收藏
退出
首页
›
SpreadJS & GcExcel专区
›
教程集锦
›
查看内容
发新帖
Clark.Pan
超级版主
223
主题
1万
帖子
1万
积分
超级版主
积分
16062
85961
金币
223
主题
10081
帖子
最新发帖
公式计算如何与Excel保持一致
SpreadJS实现鹰眼功能
报表插件(ReportSheet)数据源改造集合贴
报表插件(ReportSheet)实现后端分页
报表插件(ReportSheet)如何添加一张没有数据的空表
报表插件(ReportSheet),设计器添加表功能改造
为报表(ReportSheet)数据源字段设置中英文映射关系
GcExcel导出CSV特殊字符出现乱码问题
有关Sheet名称中全角半角符号的注意事项
【不推荐】在线表格编辑器监听Tab的点击事件
GcExcel导出CSV乱码问题
Clark.Pan
超级版主
/ 发表于:
2023-10-6 19:58
/
查看:
3040
/ 回复:
0
本帖最后由 Clark.Pan 于 2024-9-9 11:25 编辑
背景:
通过GcExcel导出CSV功能导出的CSV文件在打开后,中文部分会显示成乱码。
分析:
首先确认了导出CSV乱码的情况是用Excel打开,而非文本文件,通过文本文件打开,不会存在乱码问题。
那么问题变成了为什么Excel打开后会显示乱码,经过查找资料得知,Excel默认的编码格式为ANSI编码,这里首先了解ANSI编码的特性:
ANSI是一种字符代码,为使计算机支持更多语言,通常使用 0x00~0x7f 范围的1 个
字节
来表示 1 个英文字符。超出此范围的使用0x80~0xFFFF来编码,即扩展的ASCII编码。
不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操作系统中,ANSI 编码代表 GBK编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 JIS 编码。
由此可知,在不同语言的操作系统下,ANSI的编码格式是不同的:
例如:在英文操作系统下编码格式为ISO-8859-1,在中文操作系统下则是GBK。
而GcExcel默认导出CSV的编码格式为UTF-8,而在中文的window操作系统下,Excel打开的编码是GBK,所以这就是导致乱码的原因。
解决方案有两种:
一.在导出CSV的时候设置编码格式为GBK,如果设置GBK之后仍然有部分特殊字符存在乱码问题,请参考
这篇文章
的处理方式。
CsvSaveOptions options = new CsvSaveOptions();
options.setEncoding("GBK");
复制代码
二.另一种就是在Excel中解决,Excel专门有提供对于导入CSV文件选择编码格式的方法,操作如下:
1.打开 Excel,执行“数据”->“从文本/CSV”
2.选择 CSV 文件,出现文本导入向导,这里面选择编码然后导入即可。
这里有一点要注意:
因为Java项目牵扯工程编码,而GcExcel默认导出CSV的编码格式是UTF-8。这里要注意工程编码要与导出CSV的编码格式保持一致,否则在生成CSV的时候就会出现乱码,这时候上述的做法将无法进行转换。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
x
收藏
回复
点击查看 -->【预览版体验】SpreadJS v16.0 预览版 - 新文件结构
0
个回复
讲师达人
悬赏达人
微信认证勋章
SpreadJS认证
SpreadJS高级认证
元老葡萄
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
发表回复
返回顶部