Windows 上创建的文件,上传到 Linux 服务器,文件名乱码?

ad758ae48ef0bc49ee8a442107196026.gif

作者 | 刘光录

来源 | TIAP

先来说一下问题,在 Windows 下创建的一系列文件,上传到 Linux 服务器后,出现文件名乱码,导致文件无法读取的情况。

事情的起因是这样的...

最近有这样一个需求:在Java Web工程中读取本地某一个文件夹(固定路径,写在配置文件中)下的所有文件,然后将其导入到系统中。最直接的方案就是使用java.io.File的listFiles方法列出这个文件夹中的所有文件,然后在做处理,我们也是这样做的。

在本地测试没有任何问题,但是一旦部署到生产环境(Linux系统环境),问题就来了:由于文件是通过FTP上传到固定文件夹中的,所以有一些中文名称的文件,在上传到Linux系统中后,就出现了乱码,程序也无法读取到。

于是开始检查tomcat编码、操作系统编码格式,都统一设置为UTF-8。

Tomcat:

catalina.sh中添加:export LANG=zh_CN.UTF-8

Linux 服务器编码:

vi /etc/sysconfig/i18nLANG="zh_CN.UTF-8"

注:检查操作系统编码命令为echo $LANG。查看操作系统语言命令:locale

统一编码后,问题依然存在。这时候才意识到,由于文件是在windows下生成的,默认编码都是gbk,所以需要将文件名称转码。

使用 convmv 将文件名转码

将文件名称转码,需要用到 convmv,这是一个转码工具。

在线安装 convmv

Linux中安装命令如下:

yum install convmv

如果系统没有联网,或者屏蔽了yum命令,可以先下载程序包,然后安装。

使用程序包安装步骤

1)下载

下载地址为:https://pkgs.org/download/convmv

根据操作系统版本选择相应的版本下载:

e019182d2b2460cc6c9fdc47dbe3894f.png

找到下载地址:

132d260192961b29d3f57fbfb632a1f8.png

2)安装

将文件拷贝到一个路径下(比如home),执行安装命令:

sudo rpm -ivh convmv-1.15-2.el7.noarch.rpm

使用 convmv 对中文文件名进行转码

安装完 convmv 之后,就可使用 convmv 转码中文文件名了。为了操作方便,可写一个shell脚本,将文件名称转码:

#!/bin/bash
convmv -f gbk -t utf-8 -r --notest /opt/ftp

上述命令,是将 /opt/ftp 路径下的所有文件名,都统一转码为utf8。

这样中文名称的文件就能被程序读取到了。

在 Java Web 工程中应用的时候,每次有新文件上传,就手动执行一下上述shell脚本,显然是不现实的,所以最简单的方法,就是使用 Java 调用 shell 脚本,让其自动转码。

Java 调用 shell 脚本的代码如下:

List<String> commend = new ArrayList<String>();
commend.add("convmv");
commend.add("-f");
commend.add("gbk");
commend.add("-t");
commend.add("utf-8");
commend.add("-r");
commend.add("--notest");
commend.add("/opt/ftp");
try{ProcessBuilder builder = new ProcessBuilder();builder.command(commend);Process proc = builder.start();proc.waitFor();
}catch(Exception e){e.printStackTrace();
}

至此,问题解决。

以上就是本次分享全部内容,欢迎讨论。

396ee277ca5f74680c9e6ed2566b20b6.gif

往期推荐

redis + lua实现分布式接口限流实现方案

剖析 kubernetes 集群内部 DNS 解析原理

Docker 镜像和容器的导入导出及常用命令

如何从 Docker 镜像里提取 dockerfile!

b4c4a90d6be53b71bbde00822d283797.gif

点分享

91a08bf34fee515ec99d92746483d64e.gif

点收藏

6483bfc1bbe9073a7c36ce91edb733ed.gif

点点赞

ea69ff0ea15fab440b4f91f3a51e80dd.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云成为首个通过“虚拟化云平台性能测试(大规模)”的云厂商

简介&#xff1a;2021年7月27日&#xff0c;在可信云大会上&#xff0c;中国信息通信研究院发布了《虚拟化云平台性能评估方法》&#xff0c;同时&#xff0c;宣布了阿里云成为首个通过“虚拟化云平台性能测试&#xff08;大规模&#xff09;”的云厂商&#xff0c;并获得“202…

阿里云神龙团队拿下TPCx-BB排名第一的背后技术

简介&#xff1a;阿里云自主研发的神龙大数据加速引擎获得了TPCx-BB SF3000世界排名第一的成绩。 一 背景介绍 近日&#xff0c;TPC Benchmark Express-BigBench(简称TPCx-BB)公布了最新的世界排名&#xff0c;阿里云自主研发的神龙大数据加速引擎获得了TPCx-BB SF3000排名第…

从中国移动财报透视:什么在支撑移动云发展韧性?

8 月 11 日&#xff0c;中国移动公布 2022 年中期业绩报告。报告显示&#xff0c;上半年中国移动营运收入达人民币 4969 亿元&#xff0c;同比增长 12.0%。净利润 703 亿元&#xff0c;同比增长 18.9%&#xff0c;盈利能力全球领先。其中&#xff0c;移动云收入达人民币 234 亿…

vue 前期准备,项目结构

环境 1、node -v 检测 没有就下载node&#xff0c;装到C盘 http://nodejs.cn/download/ 2、vue -v 检测 没有就 npm install -g vue/cli 或者 yarn global add vue/cli 安装脚手架 网址 https://cli.vuejs.org/zh/ 也可以从网址里找到…

如何设计一个复杂的业务系统?从对领域设计、云原生、微服务、中台的理解开始

简介&#xff1a;业级应用架构是在不断的演进和迭代&#xff0c;但是我始终感觉企业应用架构的形成过程是在一种看起来科学的方法论下&#xff0c;但是又不完全科学的过程中实现的。 作者&#xff1a;焦方飞 大年初一&#xff0c;看完中国队 1:3 越南队的比赛&#xff0c;在思…

如何从容应对复杂性

简介&#xff1a;软件的复杂性&#xff0c;是一个很泛的概念。但是一直都是开发过程中的一个难题&#xff0c;本文旨在探讨如何去从容应对复杂性。 作者 | 無涯 来源 | 阿里技术公众号 软件的复杂性&#xff0c;是一个很泛的概念。 但是一直都是开发过程中的一个难题&#xf…

阿里巴巴开源大规模稀疏模型训练/预测引擎DeepRec

简介&#xff1a;经历6年时间&#xff0c;在各团队的努力下&#xff0c;阿里巴巴集团大规模稀疏模型训练/预测引擎DeepRec正式对外开源&#xff0c;助力开发者提升稀疏模型训练性能和效果。 作者 | 烟秋 来源 | 阿里技术公众号 经历6年时间&#xff0c;在各团队的努力下&#…

产学融合如何促进技术创新,英特尔打了个样

作者 | 宋慧 出品 | CSDN 经过多年的积累与扎实科研&#xff0c;中国的科学与技术水平正在达到和超越世界一线水平。这离不开中国有基数庞大的用户和应用场景&#xff0c;为科学界和工业界提供了将理论付诸实践的机会&#xff0c;反复打磨迭代&#xff0c;以提升技术指标。 作…

3大能力升级,云效+钉钉,让研发协作更「敏捷」

简介&#xff1a;你的团队是否面临如下问题&#xff1a;没有敏捷经验&#xff0c;不知道如何落地敏捷或者敏捷实施不规范&#xff1f;研发交付过程信息更新不及时&#xff0c;无法及时跟进交付结果&#xff1f;员工入职离职&#xff0c;多套账号权限管理难&#xff1f;缺乏交付…

阿里云张献涛:自主最强DPU神龙的秘诀

简介&#xff1a;读懂云计算&#xff0c;才能看清DPU热潮。 微信公众号搜索“弹性计算百晓生”&#xff0c;获取更多云计算知识。 如果细数最近火爆的科技概念&#xff0c;DPU必然位列其中。 这是英伟达一手捧红的新造富故事&#xff0c;是2021年SoC领域最热火朝天的创业赛道…

Gartner发布2022年新兴技术成熟度曲线,推动沉浸式、AI自动化发展

编辑 | 宋慧 供稿 | Gartner Gartner 2022年新兴技术成熟度曲线列出了25项值得关注的新兴技术&#xff0c;这些技术正在推动沉浸式体验的发展和扩展、加速人工智能&#xff08;AI&#xff09;自动化并优化技术人员交付。 Gartner研究副总裁Melissa Davis表示&#xff1a;“新兴…

阿里云张献涛:公共云正不断向外延伸,一云多态是未来趋势

简介&#xff1a;一云多态是公有云的未来趋势&#xff0c;包括产品的多形态、部署的多形态和生态的多形态。 编者按&#xff1a;2021年10月22日&#xff0c;在云栖大会《一云多形态部署最佳实践》分论坛&#xff0c;阿里巴巴集团研究员、阿里云弹性计算产品线负责人张献涛发表…

4种典型限流实践保障应用高可用|云效工程师指北

简介&#xff1a;4种典型限流实践保障应用高可用&#xff0c;本文总结了一份AHAS限流实践指南&#xff0c;如果你的系统有被恶意用户攻击的风险&#xff0c;或者系统中某个应用出现异常可能会造成雪崩效应&#xff0c;那么这篇文章会对你有所帮助。 大家好&#xff0c;我叫黄博…

阿里巴巴云原生大数据运维平台 SREWorks 正式开源

简介&#xff1a;阿里巴巴云原生大数据运维平台 SREWorks&#xff0c;沉淀了团队近10年经过内部业务锤炼的 SRE 工程实践&#xff0c;今天正式对外开源&#xff0c;秉承“数据化、智能化”运维思想&#xff0c;帮助运维行业更多的从业者采用“数智”思想做好高效运维。 作者 | …

阿里云 VPC 内网性能测试最佳实践

简介&#xff1a;本文介绍了在阿里云 VPC 内网执行性能测试的方法。相较于传统的公网性能测试&#xff0c;VPC 内网性能测试完全在客户 VPC 环境进行&#xff0c;无需暴露服务到公网&#xff0c;安全性更高&#xff0c;灵活性更强。 作者:风起 背景 随着互联网的快速发展&am…

​在可视化大屏中轻松完成机器学习建模和调参应用实例

Streamlit 是一个开源 Python 库&#xff0c;可帮助开发人员为其系统创建交互式图形用户界面。它专为机器学习和数据科学家团队设计。使用 Streamlit&#xff0c;我们可以快速创建交互式 Web 应用程序并进行部署。前端工作对数据科学家来说并不重要&#xff0c;他们只想要一个小…

EventBridge 事件总线及 EDA 架构解析

简介&#xff1a;EventBridge 是事件驱动的具体落地产品&#xff0c;也是 EDA 的最佳实践方式。 作者&#xff1a;肯梦 作为 Gartner 定义的 10 大战略技术趋势之一&#xff0c;事件驱动架构&#xff08;EDA&#xff09;逐渐成为主流技术架构。根据 Gartner 的预估&#xff0…

开发者驱动的软件公司,如何赚取万亿美元?

【CSDN 编者按】在过去二十年中&#xff0c;诞生了两个价值数万亿美元的企业软件行业&#xff1a;SaaS&#xff08;Software as a Service&#xff0c;软件即服务&#xff09;软件和公有云。如今&#xff0c;第三个以开发者为核心的万亿美元软件浪潮正在来袭&#xff0c;企业该…

解决vue路由守卫报错信息

//在router文件中写入&#xff0c;修改报错信息 const originalPush VueRouter.prototype.push VueRouter.prototype.push function push(location, onResolve, onReject) {if (onResolve || onReject) {return originalPush.call(this, location, onResolve, onReject)}retu…

好云推荐官丨飞天加速之星怎样选择云服务器ECS?

编者按&#xff1a;本文来自“好云推荐官”活动的技术博主投稿&#xff0c;作者&#xff08;昵称天狼&#xff09;曾入选首届“飞天加速之星”&#xff0c;获得飞天人气奖。 ​你是否还在苦苦地寻找一家合适的云厂商&#xff0c;寻找合适的服务器来部署你开发的网站、程序&…