Linux乱码问题解决方案
欢迎和大家交流技术相关问题:
邮箱: jiangxinnju@163.com
博客园地址: http://www.cnblogs.com/jiangxinnju
GitHub地址: https://github.com/jiangxincode
知乎地址: https://www.zhihu.com/people/jiangxinnju
linux系统中文件名内容为urf8编码, windows系统中文件名默认为gbk编码, 多数文档使用gbk编码,系统采用utf8编码
无中文输入法导致的乱码
1、ibus输入法
Ubuntu 系统安装后已经自带了ibus输入法,在英语环境下默认不启动。配置ibus自动启动可以在ubuntu系统菜单上选择System --- Preferences --- Startup Applications,在该窗口中增加一个程序:
Name: ibus-daemon
Command: ibus-daemon -d -x -r
ibus默认提供的中文输入法比较弱智,需要额外安装ibus-pinyin,命令如下:
sudo apt-get install ibus-pinyin
这时,还需要将ibus-pinyin输入法启动。在ubuntu系统菜单上选择System --- Preferences --- IBus Preferences,在Input Method页中的“Select an input method”下拉框中选择增加Chinese – Pinyin,就是图标中有个一个大大的“拼”字的那一个,然后点击Add按钮,最后通过Up按钮将该输入法移动到最上面。系统重启后,通过Ctrl + 空格即可调出ibus输入法。ibus输入法总体来说不错,但是在我的环境下发现无法在部分Java程序中调出来,例如Netbeans、OpenProj。
2、fcitx输入法
由于ibus的缺陷,所以我尝试了fcitx,使用下来也非常不错,而且可以在Java程序中正常使用,只是在这种情况下光标跟随有些问题,输入界面会停 留在屏幕最下端,但是可以接受,比起ibus不能使用要好多了。
安装fcitx:
sudo apt-get install fcitx
启动fcitx:
im-switch -s fcitx
注销后重新登录,fcitx就会生效。如果需要切换回ibus,可以运行im-switch -s ibus,然后注销,重新登录。fcitx同样可以通过Ctrl + 空格调出,这时会发现fcitx显示的中文是方框,因此需要修改fcitx的配置。Fcitx的配置文件在~/.fcitx/config,该文件为 GBK编码,在Ubuntu下显示不正常,可以通过如下方式操作:
cd ~/.fcitx
iconv -f gbk -t utf8 config > config.tmp
编辑config.tmp文件:
显示字体(中)=WenQuanYi Micro Hei
显示字体大小=10
使用粗体=0
保存退出,然后运行命令:
iconv -f utf8 -t gbk config.tmp > config
注销后重新登录,fcitx显示正常。
对于搜狗输入候选字乱码问题,先运行
sudo apt-get install fcitx-module-kimpanel
然后注销或者重启,一般就可以了
utf8 和 UTF-8 有什么区别
“UTF-8”是标准写法,在windows下边英文不区分大小写,所以也可以写成“utf-8”。“UTF-8”也可以把中间的“-”省略,写成“UTF8”。一般程序都能识别,但也有例外(如下文),为了严格一点,最好用标准的大写“UTF-8”。只有在MySQL中可以使用“utf-8”的别名“utf8”,但是在其他地方一律使用大写“UTF-8”。
网页上Flash中的中文显示为方框的解决办法
编辑/etc/fonts/conf.d/49-sansserif.conf文件,作如下修改:
<edit name="family" mode="append_last">
<string>WenQuanYi Micro Hei</string>
</edit>
Java程序部分中文显示为方框的解决办法
在$JAVA_HOME/jre /lib/fonts目录下建立fallback目录,将中文字体文件复制(或link)到fallback目录。
sudo mkdir $JAVA_HOME/jre/lib/fonts/fallback
sudo ln /usr/share/fonts/truetype/wqy/wqy-microhei.ttc $JAVA_HOME/jre/lib/fonts/fallback/
“GBK乱码”,参考
乱码的样子类似:
à??ü òá??à3?£???1,°2à??ü òá??à3?£???1
解决方法:
convmv -r -f utf8 -t iso88591 --notest --nosmart * && convmv -r -f gbk -t utf8 --notest --nosmart * # 把乱码文件名文件复制在一个空目录里运行(这样错了也不怕):
“ascii乱码”参考
乱码的样子类似:
%E5%8C%BB%E4%BF%9D
解决方法:
1.使用uni2ascii 代码:echo 乱码原文 | ascii2uni -a J
2.安装nautilus-filename-repairer0.06(官方有源码,但是依赖问题,我还没安装成功,而0.05版与现在的nautilus有点小小的合作障碍,只能看不能改名)
3.用chromeplus-1.3.3.1下载(因为这类乱码主要在用ff(默认utf8)下载qq群里的文件之后产生,用chromeplus(默认GBK)下就没问题了)
另外,至于文件里面内容的乱码问题可以搜索enca.
解决Rhythmox乱码问题:
安装Rhythmox:sudo apt-get install rhythmbox
安装mid3iconv:sudo apt-get install python-mutagen
mid3iconv -h
Clementine乱码问题
安装mid3iconv:sudo apt-get install python-mutagen
mid3iconv -h
Clementine不支持utf8,需要吧所有的mp3歌曲转换为gbk格式,wma好像不用转就可以
mid3iconv -e gbk *.mp3(由于不能带-r参数,所以要依次进入每个文件夹)
另外clementine采用gstreamer作为后端,需要安装gstreamer插件:
- 如果想支持mp3,需要安装gstreamer-0.10-plugins-bad和gstreamer-0.10-plugins-ugly
- 如果想支持wma,需要安装gstreamer-0.10-ffmpeg
- 如果想支持mms流媒体,需要安装gstreamer plugins for mms
另外Clementine基于Amarok,所以支持Amarok的插件一般都支持Clementine,比如osdlyrics。
转换文件内容编码:
file -i <file name> 检测文件编码
iconv --help
转换文件名编码
sudo apt-get install convmv
convmv --help
convmv -f gbk -t utf8 -r --notest files
convmv -r -f utf8 -t iso88591 * --notest --nosmart && convmv -r -f gbk -t utf8 * --notest --nosmart
解决gedit乱码问题:
gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030', 'GB2312', 'GBK', 'UTF-8', 'BIG5', 'CURRENT', 'UTF-16']"
gsettings set org.gnome.gedit.preferences.encodings shown-in-menu "['GB18030', 'GB2312', 'GBK', 'UTF-8', 'BIG5', 'CURRENT', 'UTF-16']"
解决PDF中文乱码:
sudo apt-get install poppler-data
解决rar文件乱码
使用rar
解压zip文件乱码
最近碰到这个问题,网上搜了一圈,都是什么unzip -O,一点用都没有,这些哥们估计是直接复制,用都没用过。后来找了个终极方法,用python的脚本来解压,试了下,还真管用!!!以下为python脚本的代码,新建文件jieya.py,写入以下代码:
#!/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()
然后zip文件跟jieya.py放在同一级目录,运行命令python jieya.py file.zip,哦了!
smplayer 中文字幕乱码解决方法
- 打开选项-》首选现:选择字幕选项卡。
- 找到“默认字符编码”选项,在下拉框中选择“简体中文(cp936)”
- 再打开“字体”页卡(上边),选择“系统字体”在下拉选框中选择一种简体中文字体,如 Weu Quanyi Zen Hei 等。
VLC播放器显示文件名乱码
初选项中修改一种支持中文的字体
Linux乱码问题解决方案的更多相关文章
- linux下动态链接库解决方案(二)
以前写过一个关于linux下用c++写动态链接库无法通过的解决方案,今天看到<linux C程序设计-王者归来>这本书,书中有个更容易的解决方案,特此记录下来 书中使用的是c语言,我改用c ...
- AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案
AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案 以下代码为asp.net环境下,c#语言编写的解决方案.数据用Dictiona ...
- c#抓取网页内容乱码的解决方案
写过爬虫的同学都知道,这是个很常见的问题了,一般处理思路是: 使用HttpWebRequest发送请求,HttpWebResponse来接收,判断HttpWebResponse中”Content-Ty ...
- idea中的汉语注释出现乱码的解决方案
日记 - idea中的汉语注释出现乱码的解决方案 我是个idea的忠实用户,新公司的项目都是用eclipse做的,通过svn拉下代码后发现,注释的内容里,中文内容都是乱码.问过项目负责人,说可能是GB ...
- Get请求,Post请求乱码问题解决方案
下面以两种常见的请求方式为例讲解乱码问题的解决方法. 1.Post方式请求乱码. 自从Tomcat5.x以来,Get方式和Post方式提交的请求,tomcat会采用不同的方式来处理编码. 对于Post ...
- PHP使用UTF8编码读取ACCESS的乱码问题解决方案(转)
PHP使用UTF8编码读取ACCESS的乱码问题解决方案 http://it.xwstudy.com/readnews.php?id=627 来源:本站编辑 发布日期:2013-05-27 已有 17 ...
- 在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案
在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案 下载: apploc.msi (下载地址:http://microsoft-applocale.software.info ...
- [转]URL传中文参数导致乱码的解决方案之encodeURI
通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码.解决方案有很多种.本文介绍如何通过encodeURI来解决中文乱码问题. 首先,在前端页面准备参数的时候,需要对中文参数进行encode处 ...
- java 乱码问题解决方案
java 乱码问题解决方案 一.tomcat: <Connector port="8080" maxThreads="150&qu ...
随机推荐
- 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册
<zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...
- nginx,文件下载,预览,防止浏览器下载时直接打开,防止预览时直接下载文件,解决nginx谷歌浏览器不支持下载问题
公司项目逐渐增多,对效率的要求越来越高,不同项目分部不同服务器,最初想用nginx 就是为了多个项目用一个url和服务器宕机解决方案 nginx也可作为附件服务器,毕竟nginx也对静态文件支持较好, ...
- .NET开发者必备的工具箱
本文作者Spencer是一名专注于ASP.NET和C#的程序员,他列举了平时工作.在家所使用的大部分开发工具,其中大部分工具都是集中于开发,当然也有一些其它用途的,比如图片处理.文件压缩等. 如果你是 ...
- oracle优化:避免全表扫描(高水位线)
如果我们查询了一条SQL语句,这条SQL语句进行了全表扫描,那到底是扫描了多少个数据块呢?是表有多少数据,就扫描多少块吗?不是的.而是扫描高水位线一下的所有块.有的时候有人经常说,我的表也不大呀,怎么 ...
- 项目中如何GB2312转UTF-8
$str = mb_convert_encoding($str, "gb2312", "UTF-8"); // 这是一个PHP 自带函数 参数1 是要转的字符, ...
- SQL常用语句整理
有次笔试最后一页的三个数据库连接查询,没有写出来,被考官暗讽了下.现在想来,实习初,确实很LOW.现公司刚入职的时候,负责过ETL方面,所以和数据库打了不少交道,五十行的联合查询.上百行的存储过程很常 ...
- Dynamics AX 2012 的工业物联网解决方案
Dynamics AX 2012 的工业物联网解决方案 物联网 物联网的概念在这两年非常火,包括近期很火的共享单车初创公司--摩拜单车,在产品中运用了Azure Iot物联网技术.但是,物联网并不是一 ...
- 深入.NET平台C#编程 测试题分析
选择题讲解 1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格式化器的Serialize()和Deserialize()方法可 ...
- Handler 、 Looper 、Message
分析: Looper:prepare和loop public static final void prepare() { if (sThreadLocal.get() != null) { throw ...
- 使用JavaScript访问子节点方法elementNode.childNodes时,需要注意的地方
有这样一个HTML结构 <div> javascript <p>javascript</p> <div>jQuery</div> <h ...