宝塔linux面板服务器中文文件名乱码如何解决?Linux 下 zip 文件解压乱码如何解决?

宝塔(BT)面板后台上传的压缩文件,解压出来的中文文件或者文件夹会出现乱码;

这个跟压缩包有关,.zip 压缩包解压出来的出现乱码是正常的;

建议压缩为 .rar 文件再上传进行解压,不会出现乱码,对中文支持比较好;

 

文件乱码解决方案
 

宝塔linux面板服务器中文文件名乱码如何解决?

开发了一个新网站,服务器安装的是宝塔服务器面板,程序上传服务器后,发现有些图片显示错误,一看图片地址不存在。

查了一下服务器的文件夹,发现上传的中文名称的图片都乱码了。

那该怎么解决呢?

在宝塔等面板下:.tar格式的压缩方式才可以完全保留正确的中文编码,而.zip会导致乱码,为了避免出错,建议网站打包也使用文件压缩时使用的tar格式,或者修复zip解压的问题。

在阿里云使用宝塔面板出现部分中文乱码?

在使用阿里云轻量级应用宝塔面板搭建后,登陆后台出现部分中文乱码,字符格式uft8,使用的是Centos镜像,各位大神,请问有解决的办法么?

您好,默认我们的面板使用的是uft8的编码格式,您看下您的文件是不是和我们默认的编码不一致。

彻底解决宝塔面板登录后台中文乱码

 

彻底解决宝塔面板登录后台中文乱码 - 御宅说
 

CentOS、RHEL 系统:

vi /etc/locale.confLANG="en_US.UTF-8"

Ubuntu、Debian 系统:

apt install localesdpkg-reconfigure locales

然后在语言选择界面通过键盘【上】【下】箭头移动,按【空格】勾选如下语言:

en_US.UTF8

zh_CN GB2312

zh_CN GBK GBK

zh_CN UTF-8 UTF-8

 

彻底解决宝塔面板登录后台中文乱码 - 御宅说
 

勾选后按键盘【Tab】切换到 OK ,再按键盘【回车】确认。

 

彻底解决宝塔面板登录后台中文乱码 - 御宅说
 

然后在选择默认语言这个界面通过【上】【下】箭头选择 en_US.UTF8 然后按【Tab】切换到 OK 再按【回车】确认。

vi /etc/default/localeLANG=en_US.UTF-8

然后输入 reboot 重启系统即可!

宝塔面板上传中文文件名乱码如何解决?

由于之前换服务器,发现下载文件都无法下载图片也无法加载,最后发现中文文件都乱码了。导致无法使用。

之后再网上查询,在网上搜索了一下教程,不是我一个人有同样的问题,在宝塔等面板下:rar和tar格式的压缩方式才可以完全保留正确的中文编码,而.zip会导致乱码,为了避免出错,建议网站打包也使用文件压缩时使用的tar格式,或者修复zip解压的问题。

宝塔面板下GBK网站乱码的解决办法

截至4.3版本,宝塔面板下GBK编码的PHP页面会显示乱码,原因是PHP配置有误。

依次进入 面板 - 软件管理 - PHP*.*管理 - 配置修改,查找:

default_charset = "UTF-8"

替换为:

default_charset = ""

请注意不要直接注释该行,否则无法生效。

保存后重载配置并重启PHP服务。

Linux 下 zip 文件解压乱码如何解决?

我在ubuntu 10.04下使用unzip,7z,7za都无法正常解压来自windows的文件。带有中文名称的文件夹仍然乱码,请问有什么解决办法

由于zip格式中并没有指定编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,因此,导致这些zip文件在Linux下解压时出现乱码问题,因为Linux下的默认编码是UTF8。

目前网上流传一种unzip -O cp936的方法,但一些unzip是没有-O这个选项的。

我使用的版本 unzip 6.0 debian modified 版本有这个选项

我发现另外两种解决方案可用。

python方案

此方案目前来看非常完美。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import os

import sys

import zipfile

#print "Processing File " + sys.argv[1]

file=zipfile.ZipFile(sys.argv[1],"r");

for name in file.namelist():

utf8name=name.decode('gbk')

# print "Extracting " + utf8name

pathname = os.path.dirname(utf8name)

if not os.path.exists(pathname) and pathname!= "":

os.makedirs(pathname)

data = file.read(name)

if not os.path.exists(utf8name):

fo = open(utf8name, "w")

fo.write(data)

fo.close

file.close()

Windows 用户屏蔽两条 print 语句,Linux 用户不用屏蔽

7z方案

需要安装p7zip和convmv,在Fedora下的命令是

su -c 'yum install p7zip convmv'

在ubuntu下的安装命令是

sudo apt-get install p7zip convmv

安装完之后,就可以用7za和convmv两个命令完成解压缩任务。

LANG=C 7za x your-zip-file.zip

convmv -f GBK -t utf8 --notest -r .

第一条命令用于解压缩,而LANG=C表示以US-ASCII这样的编码输出文件名,如果没有这个语言设置,它同样会输出乱码,只不过是UTF8格式的乱码(convmv会忽略这样的乱码)。

第二条命令是将GBK编码的文件名转化为UTF8编码,-r表示递归访问目录,即对当前目录中所有文件进行转换。

本质问题还是zip格式的缺陷,没有字段标志出文件名的编码格式。

ZIP在压缩与解压缩的时候默认使用了系统的本地编码,如windows中文环境下为GBK,日文环境下是JIS,linux默认编码为UTF8等;那么在不同系统环境下,只要压缩与解压缩的编码不一致,就会出现乱码。

一楼提供的python解决方案,最好不要用,简单的处理会有很多风险,比如zip炸弹,目录覆盖,执行病毒文件等。

正确的做法是:尽可能的只使用英文名,尽可能的使用7z格式(rar也可以,不过是商业软件,不推荐)

解决现有的问题的话,比较靠谱的是先解压再转换,比如windows中文环境下的压缩文件到linux下解压,出现乱码的文件名即是 GBK被当做UTF8显示了,我们只要正确转换就行了

convmv -f gb2312 -t utf8 -r --notest *

本质问题还是zip格式的缺陷,没有字段标志出文件名的编码格式。

ZIP在压缩与解压缩的时候默认使用了系统的本地编码,如windows中文环境下为GBK,日文环境下是JIS,linux默认编码为UTF8等;那么在不同系统环境下,只要压缩与解压缩的编码不一致,就会出现乱码。

一楼提供的python解决方案,最好不要用,简单的处理会有很多风险,比如zip炸弹,目录覆盖,执行病毒文件等。

正确的做法是:尽可能的只使用英文名,尽可能的使用7z格式(rar也可以,不过是商业软件,不推荐)

解决现有的问题的话,比较靠谱的是先解压再转换,比如windows中文环境下的压缩文件到linux下解压,出现乱码的文件名即是 GBK被当做UTF8显示了,我们只要正确转换就行了

convmv -f gb2312 -t utf8 -r --notest *

 

关于Centos中在线解压文件名中文字符乱码的终极解决方法关于Centos中在线解压文件名中有中文字符出现乱码的终极解决方法(亲测总结):

记录一下我测试的笨办法,以备自己日后查询:

一、从Centos下载压缩包至本地解压。

从BT(Centos 7.3)中在线压缩后产生的 “BT压缩文件.tar.gz”,在本地电脑解压不产生中文文件名乱码的方法:

我是使用7-zip,分二次解压,就可以恢复出原来的中文文件名了。

使用7-zip提取 “BT压缩文件.tar.gz”,得到 “BT压缩文件.tar”

然后,再提取 “BT压缩文件.tar” 得到 “BT压缩文件”的目录。

成功解决。

PS:

RAR直接解压,中文的文件名肯定全是乱码的。

WINZIP直接解压,也不行。

二、从本地上传压缩包至Centos在线解压。

(一)BT中不作任何处理,即可在线解压成功的方法。

结论:使用RAR来压缩成ZIP文件,上传至BT后,可直接解压出中文文件名来。

测试过程如下:

(1)使用winzip,压缩的ZIP文件:BT中在线解压,中文文件名完全正常,但目录路径全部错误,全放在根目录下,形如根目录下的文件名是“Wap\abc\static\shop\js\shop修改后.js”。

(2)使用RAR,压缩的ZIP文件:BT中在线解压,中文文件名完全正常。

(3)使用7-zip,压缩的ZIP文件:BT中在线解压,中文文件名全是乱码。

总结:使用RAR来压缩成ZIP文件上传至BT是最简单的解决方法。

(二)BT中安装unar软件后,不挑什么软件压缩的.zip均可以成功解压出中文文件名的方法。

解决如下:

1、先安装unar,SSH中输入下面命令:

# yum install unar

(如果日后想卸载 请运行 # yum -y remove unar)

2、在本地上传至Centos中的.ZIP文件所在的目录下,在BT中该文件所在目录下运行“终端”

然后,输入shell命令:

unar 我的压缩文件.zip

这样,就在该zip文件同目录下,有了一个文件夹“我的压缩文件”,此目录下就是该文件包的解压文件。所有中文文件名,均正常显示。

余下的就是在BT中的文件中,剪切移动目录操作了。

总结:经过测试,此方法,对于使用RAR WINZIP 7-ZIP生在的ZIP文件,均可以完美支持中文文件名。

没有-o属性的话就重新安装下zip或者看看你服务器支不支持中文

 

隐藏内容

此处内容需要权限查看

  • 普通用户特权:8.98赞助币
  • 会员用户特权:8.98赞助币
  • 永久会员用户特权:免费推荐