字符乱码一锅炖
字符乱码一锅炖
linux系统中文件名内容为urf8编码, windows系统中文件名默认为gbk编码, 多数文档使用gbk编码,系统采用utf8编码
Linux系统无中文输入法导致乱码
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。
fcitx
由于ibus的缺陷,所以我尝试了fcitx,使用下来也非常不错,而且可以在Java程序中正常使用,只是在这种情况下光标跟随有些问题,输入界面会停 留在屏幕最下端,但是可以接受,比起ibus不能使用要好多了。
安装fcitx:sudo apt-get install fcitx
启动fcitx:im-switch -s fcitx
注销后重新登录,fcitx就会生效。如果需要切换回ibus,可以运行im-switch -s ibus
,然后注销,重新登录。fcitx同样可以通过Ctrl + Space
调出,这时会发现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
。
Linux系统网页上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 *
# 把乱码文件名文件复制在一个空目录里运行(这样错了也不怕):
Linux系统“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.
Linux系统Rhythmox乱码
安装Rhythmox:sudo apt-get install rhythmbox
安装mid3iconv:sudo apt-get install python-mutagen
mid3iconv -h
Linux系统Clementine乱码
安装mid3iconv:sudo apt-get install python-mutagen
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。
Linux系统转换文件内容编码
file -i <file name> #检测文件编码
iconv --help
Linux系统转换文件名编码
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
Linux系统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']"
Linux系统PDF中文乱码
sudo apt-get install poppler-data
Linux系统rar文件乱码
使用rar
Linux系统解压zip文件乱码
新建文件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
Linux系统smplayer中文字幕乱码
选项
->首选现
,选择字幕
选项卡。- 找到
默认字符编码
选项,在下拉框中选择简体中文(cp936)
- 再打开
字体
页卡(上边),选择系统字体
在下拉选框中选择一种简体中文字体,如Weu Quanyi Zen Hei
。
Linux系统VLC播放器显示文件名乱码
初选项中修改一种支持中文的字体
xelatex+ctex乱码
修改文档的编码设为utf-8
相关资料
-
Character encoding: https://en.wikipedia.org/wiki/Character_encoding#Character_sets,_character_maps_and_code_pages
-
What's the difference between an Encoding, Code Page, Character Set and Unicode? https://learn.microsoft.com/en-us/archive/blogs/shawnste/whats-the-difference-between-an-encoding-code-page-character-set-and-unicode
-
Code page 936 (Microsoft Windows): https://en.wikipedia.org/wiki/Code_page_936_(Microsoft_Windows)
-
GBK (character encoding): https://en.wikipedia.org/wiki/GBK_(character_encoding)
-
Emoji的编码以及常见问题的解决方法: https://segmentfault.com/a/1190000007594620
-
Java IO相关,字符编码相关: Java IO 2nd Edition
-
git乱码解决方案汇总: https://blog.zengrong.net/post/git-codec-issues/
-
Unicode 和字符集: https://learn.microsoft.com/zh-cn/windows/win32/intl/unicode-and-character-sets
-
【整理】Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR: https://www.cnblogs.com/goed/archive/2011/11/11/2245702.html
-
win10中如何将cmd,power shell设置默认编码为UTF-8(解决win10命令行中文乱码): https://blog.csdn.net/snoopy_ly/article/details/80218125
-
Android Studio Build Output 栏内汉字出现乱码的解决方案: https://blog.csdn.net/zhang5690800/article/details/104502632
-
pycharm开发python时出现控制中文显示乱码: https://blog.51cto.com/alwaysyunwei/1541563
-
解决mysql字符集乱码问题: http://www.cnblogs.com/dayday-study/archive/2012/05/18/2507276.html
-
emacs在win8乱码: https://blog.csdn.net/qianchenglenger/article/details/10950769
-
一劳永逸解决:Tomcat启动日志乱码问题: https://blog.csdn.net/weixin_47742051/article/details/121085229