咸菜

啃咸菜 品生活

vim转换文本文件字符编码

用VLCplayer手机上看电影,发现.srt的字幕文件总是显示乱码,类似于将feb鹹菜de漢字幕乱码成febûy²Ëde<9d>h×ÖÄ»,尝试更改过编码选项也无济于事,干脆直接选项定位为utf8,然后想从文本文件下手转换编码,于是又了解到一点新知识,遂记录在此。

vim转换文本文件编码

未设置.vimrc的vim,打开字幕那个.srt依然显示乱码,这时是没法转换的,需要先能够正确显示文本内容才行,也就是需找到文本是采用的那种编码。:edit ++encoding=gbk后文本正常,确定是gbk编码,此时具备转换条件,转换文件也很简单::write ++encoding=utf8

复习一下vim几个关于编码的设置

还想再记几个参数,直接放上.vimrc吧

set nocompatible
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,gb18030,latin1
set fileformat=unix
set fileformats=unix,dos
set nonumber
set showcmd
set autoindent
set ruler
set showmatch
set t_Co=256
set tabstop=2
set shiftwidth=2
filetype indent on
syntax on

不得不再了解一下code page

在转换字幕.srt文件时,如前述:set ++encoding=gbk后,文本可以正确显示,再:set encoding却返回encoding=cp936,这个cp936就是code page。

code page就是针对一定范围字符的编码页表。其可内置于操作系统(包括bios)来显示文字(包括非英文字母),不同操作系统间code page并不一定一致。code page编号以区别,有OEM用的、Windows用的,也有两者通用、共用的,比如cp936(简体gbk)。但发现vim却不把gb18030显示为cp54936,不明所以。

GB18030

7bit编码表ascii显示不了汉字,1980年设计了用于简体的gb2312和用于繁体的big5。gb2312用两组数,第一组数“区”,第二组数“位”,就是区位码。其与ascii编码冲突,作为code page时,在区位码高低字节上分别+0xa0(比如“啊”区位码1601即0x10,0x01,code page码b0a1,即0xb0,0xa1),存储格式big endian(BE,大端字节序,高位字节在前)。gb2312字符少,1995年gbk(汉字扩展规范)扩充了字符,2000年gb18030取代gbk,不仅收录汉字,还包括少数民族文字。

从ascii、gb2312、gbk到gb18030,字符编码是向前兼容的,同一个字符总是保持相同的编码(so,用错code page时汉字都乱码而大部分英文字母幸存),所以用gb18030可以正确解读以gbk编码的文本。gb集都是DBCS(双字节字符集),高字节最高位为1(以区别于ascii)。因为gb集低字节最高位也可能为1,所以需避免拆开DBCS的双字节,解析DBCS字节流时,只要遇到最高位为1(就当是双字节高字节开始了),就将两个字节认为DBCS编码(而不在意低字节最高位为0为1)。

年尾年初

再见2020,
还是浑浑噩噩的一年,自己也讨厌没有长进的自己。
前阵单位领导表态想增补一位上半年被定为有“错误”人员进支部委员班子。“错误”程度是差点档案写处分的那种,问题涉及财务。但是在研究会上谁也没有提出异议。于是我也眼瞎耳聋、大脑短路地跟投赞成票了。
上半年差点背处分的“错误”分子,下半年成功成为我们的纪检委员。
可喜可贺!
也许些许的变化就是自己有些“适应”这个破环境了吧。
班子委员

迎接2021,
祝愿爱妻孕反轻轻,平安生产,宝宝健健康康。
自己多多学习,挣脱束缚,拥抱美好未来。

DomyWiFi & Padavan

大麦dw22d路由器,闲鱼¥22入手。自己用手机充电头配了个电源…

这是我第一次刷路由器,虽然我很早就对openwrt感兴趣。作为敲门砖,这个dw22d不失为一块好砖,曾经需要拆机焊个USB头,所谓“TTL刷机”,如今只需在原厂固件状态打开/upgrade.html页面,上传breed-mt7620-reset13.bin引导文件,“密码”处填写password | mtd -x mlp2osnRG3qZGdllQPh1 -r write /tmp/breed-mt7620-resert13.bin Bootloader,注入这段神奇的脚本即可。参考恩山无线论坛,感谢大佬们。。

第一次“摸”到了openwrt的脸蛋儿…
因为我急需设置实现与主路由无线桥接,而刷入的openwrt没有适配5G-wifi…后来刷入padavan发现老毛子界面比openwrt更易上手,适合刚入门的我。
dw22d-breed