• 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 中文字幕乱码解决方法

    1. 打开选项-》首选现:选择字幕选项卡。
    2. 找到“默认字符编码”选项,在下拉框中选择“简体中文(cp936)”
    3. 再打开“字体”页卡(上边),选择“系统字体”在下拉选框中选择一种简体中文字体,如 Weu Quanyi Zen Hei 等。

    VLC播放器显示文件名乱码

    初选项中修改一种支持中文的字体

  • 相关阅读:
    poj3278 Catch That Cow
    poj2251 Dungeon Master
    poj1321 棋盘问题
    poj3083 Children of the Candy Cor
    jvm基础知识—垃圾回收机制
    jvm基础知识1
    java面试基础必备
    java soket通信总结 bio nio aio的区别和总结
    java scoket aIO 通信
    java scoket Blocking 阻塞IO socket通信四
  • 原文地址:https://www.cnblogs.com/jiangxinnju/p/6014111.html
Copyright © 2020-2023  润新知