linux环境下 java nio 文件名 乱码 utf-8 gbk

简介: 这个事情一下困扰了好几天,今天终于解决了。做个记录事情的原因为在linux下环境下需要用流输出一个文件,其实这是是件很简单的事情。但麻烦的是输出的文件中文件内容的确被编码成了GBK,可是文件名却一直是utf-8。

这个事情一下困扰了好几天,今天终于解决了。做个记录


事情的原因为在linux下环境下需要用流输出一个文件,其实这是是件很简单的事情。但麻烦的是输出的文件中文件内容的确被编码成了GBK,可是文件名却一直是utf-8。百思不得其解。也初步调过linux的字符集,确认了的确是GB2312.可是问题还是不能被解决。

回头还是以为程序的问题,把短的可怜的几段代码,反复测试,用byte【】把文件名都进行了GBK编码,然后字节输出,可是发现没有用。也试了改tomcat的强制gbk输出。

其实最后发现的问题,还是在于LINUX的字符集没有被真正改过来。


首先确认一件事情,我们常用的字节流编码,其实只能对流文件中的内容进行编码。

OutputStreamWriter fos = new OutputStreamWriter(new FileOutputStream(path),"GBK");   很熟悉的代码 吧,其中PATH,也就是文件的输出名称,是不能被编码的!!决定这个文件名编码是你的操作系统当前编码格式。


关于字符集:

一般来说要设置 linux 系统的环境变量只需要在 /etc/profile (全局) 或者 ~/.bashrc (单个用户) 即可,但是在本案例中没有用。你如要用locale去查看,发现已经变成gb2312,但!!BUT!!这是没有用的。

首先需要确认系统是不是有该字符集包:

/usr/share/i18n/charmaps(目录)
     这个目录下存放了该linux操作系统可用字符集的安装包,如果你的操作系统上没有安装某个字符集可以到这个目录下寻找安装包。例如:GB2312的安装包名字为“GB2312.gz


修改字符编码配置文件

# vi /etc/sysconfig/i18n

修改后内容如下:

LANG="zh_CN.GB2312"
SUPPORTED="zh_CN.GB2312:zh_CN:zh:en_US:en"
SYSFONT="latarcyrheb-sun16"

我直接把UTF-8的全去掉了。

接下来就是最重要的,一定要重启。不要以为linux不用重启,用类似于source这种命令去重应用。没有用的。。太天真了。

最后还是用 reboot重启了之后。才生效的。


我的天啊,花了两天的时间呢。


目录
相关文章
|
18天前
|
关系型数据库 MySQL Linux
|
20天前
|
Linux
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
《FFmpeg开发实战》书中介绍了直播的RTSP和RTMP协议,以及新协议SRT和RIST。SRT是安全可靠传输协议,RIST是可靠的互联网流传输协议,两者于2017年发布。腾讯视频云采用SRT改善推流卡顿。以下是Linux环境下为FFmpeg集成libsrt和librist的步骤:下载安装源码,配置、编译和安装。要启用这些库,需重新配置FFmpeg,添加相关选项,然后编译和安装。成功后,通过`ffmpeg -version`检查版本信息以确认启用SRT和RIST支持。详细过程可参考书中相应章节。
34 1
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
|
15天前
|
安全 Ubuntu Linux
6 个受欢迎且好用的轻量级Linux桌面环境
Linux被认为是最安全的系统,但这并不意味着它不受恶意软件或其他安全漏洞的侵害。Linux系统的使用范围非常广泛,因此防范潜在威胁至关重要。在这里,将探索 2024 年适用于 Linux 的最佳防病毒软件。根据评级、功能以及与其他 Linux 发行版的兼容性列出了十款最佳防病毒软件,内容仅供分享,不做其它用途。
109 0
6 个受欢迎且好用的轻量级Linux桌面环境
|
18天前
|
存储 Ubuntu Java
【Linux】已解决:Ubuntu虚拟机安装Java/JDK
【Linux】已解决:Ubuntu虚拟机安装Java/JDK
25 1
|
21天前
|
存储 Java Linux
Java面试之Linux和docker
Java面试之Linux和docker
17 0
|
21天前
|
Java Linux Shell
Linux软件安装和部署Java代码
Linux软件安装和部署Java代码
22 0
|
21天前
|
Linux 网络安全 虚拟化
Ngnix04系统环境准备-上面软件是免费版的,下面是收费版的,他更快的原因使用了epoll模型,查看当前Linux系统版本, uname -a,VMWARE建议使用NAT,PC端电脑必须使用网线连接
Ngnix04系统环境准备-上面软件是免费版的,下面是收费版的,他更快的原因使用了epoll模型,查看当前Linux系统版本, uname -a,VMWARE建议使用NAT,PC端电脑必须使用网线连接
|
21天前
|
Linux Docker 容器
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
Docker02--搭建Linux环境,配置Docker,docker images无法访问,因为docker没有启动,阿里云镜像加速器免费的
|
22天前
|
负载均衡 Java Linux
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,
|
24天前
|
Linux
【问题解决】Linux环境下pip下载缓慢
【问题解决】Linux环境下pip下载缓慢
12 0