如何解决Linux下zip压缩文件文件名乱码问题

如何解决Linux下zip压缩文件文件名乱码问题,第1张

Linux系统默认的字符编码是 UTF-8 Windows 是 GBK 编码,不支持UTF8 所以 Linux下 的中文文件名到 Windwos下就成了乱码。 解决办法, 一个是 用英文文件名。 另一个,把Linux系统的文件名转成GBK编码的。 不过这种转换有可能造成信息丢失

文件名在telnet中显示乱码的问题,因为不能重启服务器,执行以下环境变量更改即可中文显示:

代码如下:

export LANG="zh_CNGB18030"

export LANGUAGE="zh_CNGB18030:zh_CNGB2312:zh_CN:en_USUTF-8"

export LC_CTYPE="zh_CNGB18030"

export LC_TIME="en_USUTF-8"

[oracle@localhost dbs]$ ll

total 6256632

-rw-rw---- 1 oracle oinstall 1552 Jul 28 2010 hc_orcldat

-rw-r----- 1 oracle oinstall 12920 May 3 2001 initdwora

-rw-r----- 1 oracle oinstall 8385 Sep 11 1998 initora

-rw-r----- 1 oracle oinstall 2457 Jul 28 2010 initorclora

-rw-r----- 1 oracle oinstall 6390030336 Feb 25 10:32 募路

-rw-rw---- 1 oracle oinstall 24 Jul 28 2010 lkORCL

-rw-r----- 1 oracle oinstall 1536 Sep 9 18:45 orapworcl

-rw-r----- 1 oracle oinstall 10436608 Feb 25 09:46 snapcf_orclf

-rw-r----- 1 oracle oinstall 4608 Feb 24 21:55 spfileorclora

[oracle@localhost dbs]$ export LANG="zh_CNGB18030"

[oracle@localhost dbs]$ export LANGUAGE="zh_CNGB18030:zh_CNGB2312:zh_CN:en_US

UTF-8"

[oracle@localhost dbs]$ export LC_CTYPE="zh_CNGB18030"

[oracle@localhost dbs]$ export LC_TIME="en_USUTF-8"

[oracle@localhost dbs]$ ll

总用量 6256632

-rw-rw---- 1 oracle oinstall 1552 2010-07-28 hc_orcldat

-rw-r----- 1 oracle oinstall 12920 2001-05-03 initdwora

-rw-r----- 1 oracle oinstall 8385 1998-09-11 initora

-rw-r----- 1 oracle oinstall 2457 2010-07-28 initorclora

-rw-rw---- 1 oracle oinstall 24 2010-07-28 lkORCL

-rw-r----- 1 oracle oinstall 1536 Sep 9 18:45 orapworcl

-rw-r----- 1 oracle oinstall 10436608 Feb 25 09:46 snapcf_orclf

-rw-r----- 1 oracle oinstall 4608 Feb 24 21:55 spfileorclora

-rw-r----- 1 oracle oinstall 6390030336 Feb 25 10:37 数据文件的路径

多个环境验证过,证明是行之有效的,希望遇到类似问题的朋友,可以借助以上方法解决您的问题。

  1、查看是否安装中文语言包

 #locale -a |grep zh_CN

 没有输出,则未安装,可先安装

 安装完成,查看安装的语言包

 #locale -a |grep zh_CN

 zh_CN

 zh_CNgb18030

 zh_CNgb2312

 zh_CNgbk

 zh_CNutf8

 2、修改配置文件

 #vim /etc/localeconf

 修改:

 LANG=zh_CN(可以一一替换已安装的中文包尝试)

 重启电脑生效

背景如果Ubuntu Server在安装过程中,选择的是中文(很多新手都会在安装时选择中文,便于上手),这样在完成安装后,系统默认的语言将会是中文zh_CNUTF- 8。但问题是我们安装的是服务器,只需要运行命令行终端,但在终端下无法正常的显示默认中文编码zh_CNUTF-8。由此有以下方法解决

使用SecureCRT客户端软件

  直接修改虚拟终端界面配置项目中的字体编码为UTF-8即可。修改方法如下:

选项->会话选项->外观->字符编码->uft-8

修改以后显示中文如下图所示:

  原理其实很简单,Ubuntu Server默认的还是zh_CNUTF-8汉字编码,在服务器终端上面还是无法识别汉字,但是在虚拟终端中,经过“编码修正”以后就能够正确显示出来。相当于服务器终端将内容传递给客户端软件,客户端软件通过相应的编码方式进行解码显示中文。因为SecureCRT是安装在中文windows环境下的,而这个环境下的默认编码是GBK,可以识别汉字。那么如何解决服务器端中文乱码的问题呢,其实最好的方法就是干脆将语言环境设置成英文好了。

修改Ubuntu的配置文件/etc/default/locale

将原来的配置内容

LANG="zh_CNUTF-8"

LANGUAGE="zh_CN:zh"

修改为

LANG="en_USUTF-8"

LANGUAGE="en_US:en"

再在终端下运行:

$ locale-gen -en_US:en

注销或重启后,Ubuntu Server真正服务器实体终端就恢复成了英文的语言环境。所以,此方法不是真正意义上的中文化,而是恢复英文的默认编码

修改完以后,再次查询ip地址,可以发现就是英文环境了。

通过工具

这种方法适用于知道备份的字符集

11 convmv

convmv -f GBK -t utf-8 --notest filename

把gbk的编码转成utf-8

12 enca

enca -L zh_CN -x UTF-8 filename

将文件编码转换为UTF-8编码

13 iconv

iconv -f gbk -t utf-8 -o outfilename infilename

-f为原来的编码方式,-t 为输出文件的编码方式, -o表示输出文件名,这利用outfile表示,最后跟上要更改编码方式的文件名sourcefile

通过打包

这种方法适用于i18n 和 locale 不一致时。

具体如下:

tar -czvf /tmp/<yourtartargz> /

上面的命令会把整个目录打个包, 放在 /tmp 目录下。 然后, 你再copy了出去就可以了。

注意:备份盘,如果是USB或者移动硬盘的话,挂载时,要加 "-t 格式",来指定格式

客户端连接Linux服务器中文显示乱码,如下图所示:

字符乱码问题 :如果服务器本身支持中文,只是客户端显示乱码,通常就是

客户端字符集与服务器字符集不一致造成的。把客户端字符集改成服务器字符集就可以解决的。但是像 SSHSecureShellClient-329exe 客户端没有设置字符集的地方,就需要把字符集改为zh_CNGB18030才能正确显示中文:

export LC_CTYPE=zh_CNGB18030

export LC_ALL=zh_CNGB18030

export LANG=zh_CNGB18030

设置完就解决了客户端连接Linux系统中文显示乱码的问题。

注:每次使用客户端连接Linux服务器时,都需要手动改一下字符集。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何解决Linux下zip压缩文件文件名乱码问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情