linux打印机文字乱码

哎,Linux打印机乱码真是烦人啊。
上周有客户问我,他的惠普激光打印机打印的汉字全是乱码,我为此苦恼了好几天。
后来发现几个重要的点,记下来:
字符集是最重要的 系统和打印机必须相互协调。
您应该首先使用 locale 命令来查看 Linux 使用的字符集。
它很可能是 UTF-8 但不一定是打印机!您需要打开打印机的控制面板或阅读手册来确认它支持 GBK、UTF-8 或其他复杂的编码。
上次遇到佳能的老机型,系统是UTF-8 ,打印机设置为GBK,所以打印出来的汉字直接转成了方块字。
如果确实不兼容怎么办?您可以尝试使用 iconv 进行转换,然后打印出来。
例如,如果文件采用 GBK 编码,则可以在打印前使用 iconv -f gbk -t utf-8 filename.txt > new.txt 将其转换为 UTF-8 但是,这取决于您要打印的文件采用的编码。
因此您需要首先弄清楚这一点。

驱动程序和配置是问题的原因 切勿使用通用驱动程序。
对于 HP 和 Canon,最好去官网下载专门针对 Linux 的驱动程序包,格式为 .deb 或 .rpm。
我之前用过万能驱动,打印出来的PDF文件中的汉字都是乱码。
切换到官方驱动后,一切立即正常。
CUPS 配置需要仔细考虑。
在浏览器中打开http://localhost:6 3 1 ,检查打印队列,单击您的打印机并检查驱动程序型号是否正确。
有时系统自动选择的驱动程序根本不匹配,需要手动选择。
上次我有一个客户,系统选择了虚拟打印机驱动程序,打印的所有内容都乱了。
配置文件也容易出错。
在/etc/cups/cupsd.conf中,需要将@LOCAL添加到Allow行,否则甚至可能无法在本地访问。
还有 /etc/cups/printers.conf。
检查DeviceURI和Info字段是否随机更改。
我见过有人拼错 URI,导致打印不断失败。

特别注意打印命令和文件编码 lp命令参数必须正确添加。
例如, lp -o binding=utf-8 filename.txt 强制使用 UTF-8 编码。
有时直接使用lpr filename.txt默认为系统编码,与打印机不兼容。
文件本身取决于编码。
首先,使用 file filename.txt 命令查看它是什么编码。
上次有同事将Windows生成的标准GB2 3 1 2 文件直接转移到Linux上,并以UTF-8 打印。
当然,汉字是乱码。
首先需要使用 iconv -f gbk -t utf-8 filename.txt > new.txt 进行转换。
还必须安装语言包。
如果您想打印中文文档,您的系统上必须安装中文语言包。
在终端中输入 sudo apt install language-pack-zh-hans (Debian/Ubuntu 系统)或 sudo yum install zh-CN (CentOS 系统),安装后打印出来。

测试并阅读最后是协议 打印测试页是最简单的。
CUPS 管理界面中有打印测试页的选项,也可以直接使用 lp /usr/share/cups/data/testprint 命令。
您认为乱码只出现在中文部分,还是全部都是乱码?如果出现中文乱码,很可能是字符集问题。
如果乱码位置固定,例如第5 行完全乱码,则可能是行宽设置错误。
日志中隐藏着一些线索。
/var/log/cups/error_log 是CUPS 的错误日志。
搜索关键字“过滤失败”和“编码错误”。
上次我的HP打印机出现乱码时,我在日志中看到“缺少汉字字体”,然后就知道是驱动程序中缺少汉字字体。

无论如何,这件事必须按部就班地处理。
首先检查字符集是否正确,然后检查驱动程序和CUPS配置,然后查看打印命令和文件编码,最后通过测试页和日志定位问题。
有时一些小细节不正确,例如例如忘记添加某个参数或者没有安装某个语言包都会导致乱码。
尝试一下并逐步检查。

如何在Linux下查找文件内容包含某个特定字符串的文件

Last week my friend asked me how to find out if all files in a directory contain a certain string.
找到。
-type f -exec grep -l "IBM" {} \;
After trying it, it said it only prints the file name, which is good.
I added that if you want to know which line contains this string, you can add the -n parameter.
But he didn't express his opinion, forget it.

linux查看系统编码格式命令linux查看系统编码

说白了,Linux有自己的命令可以处理查看文件编码。
但转换时必须考虑兼容性。

要扩展,首先使用文件名,例如例如。
test.txt文件,直接返回编码信息,如:E.g. “UTF-8 Unicode 文本”。
这个命令是最直接的,但有时在检测特定GBK变体时并不准确。
去年我们在一个项目中遇到了一个陷阱,旧系统中的 GBK 文件显示“无法识别的编码”。
另外一个细节:echo $LANG只能看到系统默认的编码,与文件本身无关,不要混淆。
还有另一个关键细节。
Linux 文本文件默认为 UTF-8 ,但许多 Windows 文件为 GBK(或 GB2 3 1 2 )。
转换时,使用文件名 iconv -f gbk -t utf-8 请记住添加 -o 以输出到新文件,例如例如。
iconv -f gbk -t utf-8 test.txt -o new.txt。
否则,原始文件将被直接覆盖,这确实很混乱。

一开始我发现Vim的固定文件编码非常通用,但后来发现它只显示当前会话的默认编码,而不显示文件固有的属性等。
还有一点是,你可以使用 convmv -f gbk -t utf-8 --notest .txt 批量更改文件名编码,但你必须有 root 权限。
很多人没有注意到这一点。

建议直接使用file命令,简单有效。
使用 iconv 进行转换,但最好先备份文件。
毕竟如果编码问题搞乱了,数据也可能直接乱了。