linux打印机文字乱码

哎... Linux 这玩意儿... 打印机文字乱码... 真头疼... 2 02 2 年的时候,我遇到这事儿... 在北京... 公司那台 HP LaserJet... 突然打出来的文件全是乱码... 像这样 ☺️👻...
先看看字符集... 我记得那会儿是 UTF-8 ... 执行那个 locale 命令... LC_CTYPE=utf8 ... 看看系统用啥... 然后打印机... HP 那个... 它得支持 UTF-8 ... 可能需要手动设置... 我忘了具体咋弄了... 可能是打印机面板上有个菜单... 找到字符集设置...
不行... 系统和打印机不兼容... 我当时就琢磨... 能不能临时改改打印命令... 用 iconv 转换一下... 像这样... iconv -f gbk -t utf-8 input.txt | lp... 看行不行... 可能得试几种编码...
驱动... 这是个大问题... 我记得 HP 官网... 那里有 Linux 的驱动... .deb 包... 我当时下了个... 安装上... 比之前那个通用驱动好多了... 但还得去 CUPS... 就是那个网址 http://localhost:6 3 1 ... 登进去... 看看打印机那项... 驱动是不是对的上... 要是型号选错了... 重装... 选对...
配置文件... /etc/cups/cupsd.conf... 我当时忘了改没改... 但可能得看看 Allow 那一块... 确保 Allow@LOCAL 在那儿... 别给关了... 还有那个 printers.conf... /etc/cups/printers.conf... 拼接 DeviceURI 对不对... Info 字段有没有乱码...
打印命令... lp 或 lpr... 添加参数... lp -o encoding=utf-8 ... 强制用 UTF-8 ... 我试过... 有时候管用... 文本文件... 先用 file 看看... file test.txt... 显示啥编码... 是 "UTF-8 text" 还是 "GB2 3 1 2 text" 呢... 然后转编码... iconv -f gbk -t utf-8 test.txt > new.txt... 再打印 new.txt... 中文环境... 得装语言包... apt-get install language-pack-zh-hans... 我当时装了没装... 可能忘了...
测试页... lp /usr/share/cups/data/testprint... 打个测试页看看... 乱码是不是固定在哪儿... 比如中文全乱... 可能就是字符集...
最后... 看日志... /var/log/cups/error_log... 我翻了半天... 搜 filterfailed... encodingerror... 那玩意儿密密麻麻... 我当时看蒙了... 然后打印机驱动... 可能还有自个儿日志... 在 /var/log/ 下... 按说明看...
就这样... 搞了好久... 每次都得试... 转换编码... 换驱动... 看配置... 看日志... 像剥洋葱... 慢慢来... 可能... 也许... 就能解决了...

如何查看linux系统的字符集

说白了,这三个命令都能查到系统字符集,但用场景和效率天差地别。

先用echo $LANG,去年我们跑那个国际化项目时,发现它直接显示语言环境变量,比如zh_CN.UTF-8 ,适合快速定位;另外一点是env|grep LANG,这个更暴力,去年团队抽丝剥茧找某个老系统乱码问题时,它把所有环境变量全拉出来,虽然慢但覆盖广;还有个细节挺关键的,locale去年调试某个法语系统时简直绝了,它能显示所有locale详情,包括字符编码、货币符号,但命令行看全输出得有点费劲。

我一开始也以为grep比locale快,后来发现不对,当系统locale文件特别大时,grep卡成PPT都不如。
等等,还有个事,locale命令得先装locales包,这个点很多人没注意。

建议新手先用echo $LANG试试,真卡壳再用locale全局扫一遍。

MySQL 字符串指南 | Linux 中国

1 . 字符串分类要清楚,二进制和非二进制区别大。
2 . 二进制字符串存非文本,直接二进制码,不转字符。
3 . 非二进制存文本,字符集和排序规则不能少。
4 . UTF-8 、GBK选字符集,拉丁1 已淘汰。
5 . LENGTH()数字节,CHAR_LENGTH()数字符。
6 . 排序规则影响大小写和音调,utf8 mb4 _09 00_ai_ci不区分大小写。
7 . 查字符集用SHOWCHARACTERSET,查排序规则用SHOWCOLLATION。
8 . 默认utf8 mb4 ,支持emoji,拉丁1 已淘汰。
9 . 字符集影响字节和字符长度,latin1 单字节,utf1 6 多字节。
1 0. 设置字符集用SETNAMES,改排序规则也用SETNAMES。
1 1 . 字符串存储类型,BINARY固定,VARCHAR可变。
1 2 . CHAR固定长度,VARCHAR可变,保留空格。
1 3 . 字符集不一致,乱码风险高。
1 4 . 排序规则要符合业务需求。
1 5 . 存储效率,固定长度节省空间。
1 6 . CHAR自动去空格,VARCHAR保留空格。
1 7 . 自己掂量。