Linuxq4os中文乱码的简单介绍

本文目录一览:

  • 1、用 Mac OS X 自带的 SSH 登陆 Linux 后出现中文乱码,如何解决?
  • 2、如何解决 linux 的乱码问题
  • 3、Qt中文乱码问题怎么解决
  • 4、Linux中unzip解压时中文乱码如何解决
  • 5、如何解决 linux 操作系统显示中文乱码问题?

用 Mac OS X 自带的 SSH 登陆 Linux 后出现中文乱码,如何解决?

这种情况一般是终端和服务器的字符集不匹配,MacOSX下默认的是utf8字符集。

输入locale可以查看字符编码设置情况,而我的对应值是空的。

因为我在本地和服务器都用zsh替代了bash,而且使用了oh-my-zsh,而默认的.zshrc没有设置为utf-8编码,所以本地和服务器端都要在.zshrc设置,步骤如下,bash对应.bash_profile或.bashrc文件。

1.在终端下输入

vim ~/.zshrc

或者使用其他你喜欢的编辑器编辑~/.zshrc文件

!--more--

2.在文件内容末端添加:

export LC_ALL=en_US.UTF-8

export LANG=en_US.UTF-8

接着重启一下终端,或者输入source ~/.zshrc使设置生效。

设置成功的话,在本地和登录到服务器输入locale回车会显示下面内容。

LANG="en_US.UTF-8"

LC_COLLATE="en_US.UTF-8"

LC_CTYPE="en_US.UTF-8"

LC_MESSAGES="en_US.UTF-8"

LC_MONETARY="en_US.UTF-8"

LC_NUMERIC="en_US.UTF-8"

LC_TIME="en_US.UTF-8"

LC_ALL="en_US.UTF-8"

这时,中文输入和显示都正常了。

Linuxq4os中文乱码的简单介绍

如何解决 linux 的乱码问题

出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示

txt文件在linux环境下打开呈现了乱码状态。

解决方法:在linux用iconv命令,输入命令如下

iconv -f gbk -t utf8 file.pdf file.pdf.utf8

此时会重生一file.utf8文件,打开之后就能正常显示中文

linux系统下修改语言配置方法有:

法一:修改/etc/profile文件,增加export LANG=zh_CN.GB18030

法二:修改/etc/sysconfig/i18n文件,将

#LANG="en_US.UTF-8"

#SUPPORTED="en_US.UTF-8:en_US:en"

#SYSFONT="latarcyrheb-sun16"

改为

LANG="zh_CN.UTF-8"

SUPPORTED="zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030"

SYSFONT="latarcyrheb-sun16"

/etc/profile: 为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.

/etc/sysconfig/i18n 这里存放的是系统的区域语言设置

LANG 表明你当前系统的语言环境变量设置 ,这里是 zh_CN.GB18030

SUPPORTED 表明系统预置了那些语言支持 ,不在项目中的语言不能正常显示

SYSFONT 定义控制台终端字体,你文本登录的时候显示的字体是 latarcyrheb-sun16

I18N 是 internationalization 的缩写形式,意即在 i 和 n 之间有 18 个字母,本意是指软件的“国际化”.I18N支持多种语言,不过同一时间只能是英文和一种选定的语言,例如英文+中文、英文+德文、英文+韩文等等;

如果在SCRT上操作时中文乱码,可依次点击options--session options--appearance,选择character encoding为UTF-8

Qt中文乱码问题怎么解决

(1)、中文编码一律使用QString::fromLocal8Bit()接口。

原因:需要支持QT4版本。QStringLiteral()方法也可取,但是它只支持QT5版本,如果没有版本问题,可以使用。

(2)、CPP等文件编码一律使用UTF8—BOM格式。

原因1:UTF8-无BOM在使用window编译器cl中编译会失败,当然除非你Windows中使用QT的Mingw版本编译开发。

原因2:不使用GBK的文件编码是为了更容易的兼容到linux版本与windows中,否则你需要改QtCreate的编码环境与linux的系统字符环境。

Linux中unzip解压时中文乱码如何解决

更改源码解决乱码

调试发现问题出现在MultiByteToWideChar方法里,

如 MultiByteToWideChar(CP_ACP,0,fn,-1,tfn,MAX_PATH); 到这里时fn中的name属性值还是正常的,在这个方法内部执行完tfn就乱了。

解决方法:

打开unzip.cpp源文件,找到函数

ZRESULT TUnzip::Get(int index,ZIPENTRY *ze)

{ // ......

// ......} 12345

这个函数里有

#ifdef UNICODE

MultiByteToWideChar(CP_UTF8,0,fn,-1,tfn,MAX_PATH);#else

strcpy(tfn,fn);#endif12345

把 CP_UTF8 改为CP_ACP, ( CP_ACP 指示要使用当前设置的 API 默认 Windows ANSI 代码页)

重新编译后

这样就解决了解压中文文件名称乱码的问题

编译时解决源码问题(无需更改源码)

上面的情况,我们我观察到unzip源代码这段开始的地方有判断

#ifndef Ext_ASCII_TO_Native 1

这样问题似乎更简单了,不用改源代码,只需在make时定义 Ext_ASCII_TO_Native 即可,这样 Ext_ASCII_TO_Native 实际为一个空的宏,不进行任何转换操作。

比如,使用下面的方法编译

make -DExt_ASCII_TO_Native 1

或者在bash执行下面两行

export LOCAL_UNZIP=-DExt_ASCII_TO_Native

make12

unzip解压缩含中文文件名zip包是出现乱码的问题解决!

如果您的系统已经安装了unzip

方法一 unzip行命令解压,指定字符集

通过unzip行命令解压,指定字符集

unzip -O CP936 xxx.zip (用GBK, GB18030也可以)1

方法二 在环境变量中,指定unzip参数

在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件

/etc/environment中加入2行

UNZIP=”-O CP936″

ZIPINFO=”-O CP936″12

方法三 利用pyton来处理

复制以下内容(Python)保存未myuzip.py文件脚本,并修改运行权限为可运行(chmod +x uzip)

#!/usr/bin/env python# -*- coding: utf-8 -*-# uzip.pyimport osimport sysimport zipfileprint "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()

这样以后我们解压缩时只需要运行此文件即可

./myuzip.py xxxx.zip

如何解决 linux 操作系统显示中文乱码问题?

问题在于:我们还没有把LANG变量改成英语之前,系统得到的LANG变量是中文的,因此,它知道需要在图形界面启动过程中启用中文输入法,但把LANG变量改成英文后,系统根据LANG变量知道系统是英文的,它便不再启动中文输入法,也不再设置和导出相关的变量,导致中文输入法不可用。因此,只要在这个脚本中,“骗”过系统,让输入法脚本“以为”系统是中文的,它不就运行中文输入法,并导出相关变量了吗? 于是,通过分析脚本,我在xinput.sh中的: lang_region=$(echo $tmplang | sed -e 's/..*//') 后面又添加了lang_region="zh_CN" 直接把lang_region=$(echo $tmplang | sed -e 's/..*//') 修改成 lang_region="zh_CN" 也可以 多添加一行是为了以后改过来方便,直接删除添加的一行就可以了。 当然,把for循环中的/etc/X11/xinit/xinput.d/${lang_region}该成 /etc/X11/xinit/xinput.d/zh _CN也可以。 当然还有其他的改法,前提是你要懂得shell 脚本的语法,看得懂脚本的意思。这样修改后,即便系统是英文的,xinput.sh脚本也会去读取/etc/X11/xinit/xinput.d/zh _CN 文件并导出其中的内容、设置好XMODIFERS等输入法变量,并运行iiimx输入法程序。 那么为什么不在图形界面启动后直接运行iiimx输入法程序呢?实验一下就知道,这根本不行。因为输入法程序是须要和被输入的应用程序配合运行的软件,在运行过程中需要导出很多变量。直接运行iiimx只运行了主程序,而没相关变量,没办法和应用程序配合完成输入工作。 完成修改工作后,保存脚本文件。输入startx命令启动图形界面,就可以用全英文的系统界面和中文输入法了。但需要注意的是:由于系统是全英文的,默认输入法也是英文,通过GNOME或者KDE菜单起动的应用程序第一次输入中文的时候不能按ctrl+空格来切换到中文,需要用鼠标在任务栏上点击输入法图标切换,第一次切换后以后就可以用ctrl+空格快捷键来切换中英文输入法了。 四,一些后续问题 某些软件,比如Open Office,通过GNOME或者KDE菜单启动的话,即使切换到中文输入法也输不进中文,这是因为整个桌面系统的环境是英文的,软件“继承”了英文环境的相关变量,这些软件就“认死理”,就是不让输入中文,这时候可以打开一个gnome终端,把LANG变量临时设置成zh_CN.UTF-8 : [root@gucuiwen ~]# LANG="zh_CN.UTF-8" 然后在这个gnome终端中,用命令打开open office: [root@gucuiwen ~]# oowriter 这样Open Office就“继承”了gnome终端的LANG变量,起动后,工具栏和菜单等都是中文的,而且能输入中文。推而广之,任何软件都可以用这种方法,根据需要,打开中文界面的软件和英文界面的软件。要以英文界面运行软件时,只要从GNOME或者KDE菜单打开,要用中文界面运行软件时,在终端中修该LANG变量,从修改过LANG变量的终端中通过命令运行即可。当然,如果你还安装了其他语言的字体,你还可以以其他语言的界面来运行程序。如日语: [root@gucuiwen ~]# LANG="ja_JP.UTF-8" [root@gucuiwen ~]# gedit 我用上面的两条命令打开的gedit 编辑器就是全日语界面的,但是能输入中文和英文,并显示日文。从而达到,一个系统,多种语言和文字共存的目的。 当然,前提是要安装了日语字体和日语locale,否则所有有文字的地方会全部显示成一连串问号。总之,要先懂得原理,之后想怎么玩就怎么玩,随心所欲,完全不受限制,充分享受用Linux的乐趣。

原创文章,作者:初欣运营网,如若转载,请注明出处:https://www.36wp.cn/101159.html

(0)
上一篇 3天前
下一篇 3天前

相关推荐

发表回复

您的电子邮箱地址不会被公开。