VxTerm:SSH工具中的中文显示和乱码时的相关信息和一些基本的知识

当我们写的程序含有控制台(Console)输出时,如果输入内容包含中文时,我们一般需要知道下面的信息,才能正确的搞清楚怎么处理中文显示的问题:

1、实际程序或文件中的实际编码:
Linux下的应用程序和文本文件,它们包含中文时,使用的编码并不一定都是UTF-8,多数也都是GBK/GB2312等编码。

一般的,不管是什么编码,程序和文本编辑/显示命令一般都能正确识别,并将正确的中文汉字输出到SHELL控制台中。

2、SHELL控制台接受SSH工具/Telnet工具等终端软件的连接后,会将SHELL控制台中输出的文本信息重定向输出通过网络传回客户端,在传回客户端之前,会重新对文字信息进行编码。

此时,这个编码就跟文本文件或应用程序实际的编码并不一定是一致的了。

客户端工具只需要确定Shell传过来时采用的编码是什么,而并不关心实际的文件内容中的编码,除非是通过SFTP等文件传输方式传输过来的。

默认情况下,Linux的Shell在传送控制台的信息过来时,默认是采用UTF-8编码传输的,所以,咱们的SSH工具,比如VxTerm中,只要建立会话时,设定“对端编码”是UTF-8,保持与Shell设定的传输编码一致就可以了。

所以,这里会有一些与一般的文章所写的内容不一样。客户端SSH工具,一般并不关心文件的实际编码,而是Shell TTY控制台通过连接传输过来的编码。

默认都是 LANG=zh_CN.UTF-8

而实际上很多编辑和显示工具,都能正确的显示不同编码的文本文件中的中文汉字,那是因为这些工具自带了编码识别功能,用以保证能正确的在Shell控制台中显示出中文。

如果您的文本文件file的编码是GB2312,但是您希望执行的命令如:catu file并不能识别这种编码时,经它识别后输出到控制台的本就是乱码,所以再通过UTF-8转码后再传过来到客户端这边当然也会是乱码。在这种情况下,如果通过配置客户端中的“对端编码”为GB2312或许是能正常的显示,但这种做法并不是最好的。正确的方法是应该使用可以识别不同编码的命令去把它给输出到控制台中。

在VxTerm中可以很方便的设定对端的编码:

我们可以在快速连接会话的窗口中,在建立会话信息时选择编码,或者是在已建立的会话中,打开右边的会话选项,选择“对端编码”,正常情况下就能显示中文:

比如,我们在本地建立了一个big5txt.txt文件,文件的编码为big5,文本内容为:

中華人民共和國

上传到linux服务器后,当我们本地设定的对端编码为UTF-8时,cat big5txt.txt的结果:

这是由于cat并不能识别和转换big5编码到Shell中,所以我们收到的是乱码。当我们把VxTerm的对端编码设为big5后,就能正常显示了:

但此处我们能正常显示,那是因为cat 这条命令会把文件的编码按原样不经转换的直接输出到了控制台中,所以我们可以通过big5编码来接收,并在VxTerm这边可以正确的把它还原。

而如果使用vim来打开big5txt.txt,于默认情况下vim采用的读取文本的组件不能识别其正确的内码并显示在它的应用程序中,其采用的文本读取组件就按默认的latin1编码来解析并显示,此时不管我们本地选择什么样的编码,都无法正常显示其文本内容,就会出现所谓的乱码:

同样的,如果我们产生的文件是gb2312编码的ansitxt.txt,此时,如果VxTerm客户端选择UTF-8,使用cat ansitxt.txt显示出来的也是乱码,选择default(仅在中文简体操作系统下)编码或者是gb2312,就能正常的cat显示

但是在vim中,由于vim默认是不支持gb2312的,可以通过下面的方法解决:

vi ~/.vimrc

set fileencodings=utf-8,gb2312,gbk,ucs-bom
set encoding=utf8
 

保存后,我们再打开 vi ansitxt.txt,此时,由于vim已能正确识别gb2312编码,所以VxTerm还得要设置“对端编码”为utf-8,就能正确的识别和编辑了。

从这里就能得知,如果所用的应用程序能正确的识别输出的文字编码到控制台中,那么只要我们保持VxTerm的对端编码与对端系统设定的编码一致,就能正确的显示中文汉字,否则,除非是像cat那样:不能识别的情况下都按照原编码的二进制内容输出,则本端按照文件的编码设定就能显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/441277.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统架构设计师-21年-下午题目

系统架构设计师-21年-下午题目 更多软考知识请访问 https://ruankao.blog.csdn.net/ 试题一必答,二、三、四、五题中任选两题作答 试题一 (25分) 说明 某公司拟开发一套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发…

matlab appdesigner系列-仪器仪表3-旋钮

旋钮,同过旋转显示特定的值 示例:模拟收音机调频 操作步骤: 1)将旋钮、标签按钮拖拽到画布上,将标签文字修改为:欢迎收听,并将旋钮其数值范围改为90-107 2)设置旋钮的回调函数 代…

15EG使用vivado2023.1建立hello world工程

1:打开软件建立工程 2:使用vivado创建设计模块并生成bit文件 3:导出硬件平台,使用vitis建立工程 4:使用vitis创建应用程序项目 5:硬件设置与调试 1:打开软件建立工程 打开VIVADO2023.1 创建一个新的工程 输入项目名称和地址,下面那个选项为是否…

力扣日记1.30【回溯算法篇】78. 子集

力扣日记:【回溯算法篇】78. 子集 日期:2023.1.30 参考:代码随想录、力扣 78. 子集 题目描述 难度:中等 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 …

CCF-CSP 202312-2 因子化简(Java、C++、Python)

文章目录 因子化简题目背景问题描述输入格式输出格式样例输入样例输出样例解释子任务 满分代码JavaCPython线性筛法 因子化简 题目背景 质数(又称“素数”)是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。 问题描述…

现货白银的交易策略包括哪些内容?如何适应策略?

交易策略被投资者视为做现货白银交易通向盈利之路的必备工具,但是投资者却不知道如何建立一个适合自己的交易策略,如果直接拿别人的交易策略过来,就犯了拿来主义的毛病,这样是不行的,下面我们就来简单讨论一下如何建立…

Linux操作系统概述

操作系统(Operating System)的定义 操作系统,是指直接管理系统硬件和资源(如 CPU、内存和存储空间)的软件。 操作系统的基本功能 ①统一管理计算机资源:处理器资源,IO设备资源,存储…

使用AXI GPIO IP核点亮led

本例程使用SD卡启动模式 创建工程模板在hello_world中已经介绍过了,这里直接从配置完zynq ip核开始 点击加号,搜索GPIO,双击添加AXI GPIO IP核 双击 GPIO IP 核进行设置,设置为输出模式,位宽为4,设置完成后…

超过1000种工具揭示了单细胞RNA数据分析的趋势

文章:Over 1000 tools reveal trends in the single-cell RNA-seq analysis landscape 杂志:Genome Biology 年份:2021 从 2016 年开始,scRNA-tools 数据库(https://www.scrna-tools.org/)不断收集单细胞转…

el-input 显示最大长度和已输入内容长度

效果如下图 多行文本框&#xff1a; 单行文本框&#xff1a; 需要设置 maxlength 和 show-word-limit 两个属性&#xff0c;在使用 maxlength 属性限制最大输入长度的同时&#xff0c;可通过设置 show-word-limit 属性来展示字数统计。 <el-inputtype"textarea&quo…

ElasticSearch面试题整理(持续更新)

1. Elasticsearch 中的倒排索引是什么&#xff1f; Elasticsearch 使用一种称为倒排索引的结构&#xff0c;ES中的倒排索引其实就是 lucene 的倒排索引&#xff0c;区别于传统的正向索引&#xff0c;倒排索引会再存储数据时将关键词和数据进行关联&#xff0c;保存到倒排表中&…

医院如何筛选安全合规的内外网文件交换系统?

医院内外网文件交换系统是专为医疗机构设计的&#xff0c;用于在内部网络&#xff08;内网&#xff09;和外部网络&#xff08;外网&#xff09;之间安全、高效地传输敏感医疗数据和文件的解决方案。这种系统对于保护患者隐私、遵守医疗数据保护法规以及确保医疗服务的连续性和…

Angular组件(二) 分割面板ShrinkSplitter

Angular组件(二) 分割面板ShrinkSplitter 前言 在Angular组件(一) 分割面板ShrinkSplitter文章中我们实现了Splitter组件&#xff0c;后来在业务场景中发现在开关右侧容器和底部容器时&#xff0c;使用起来不方便&#xff0c;ngModel绑定的值始终是左侧容器和顶部容器的大小&…

顺序表的奥秘:高效数据存储与检索

&#x1f37f;顺序表 &#x1f9c0;1、顺序表的实现&#x1f365;1.1 创建顺序表类&#x1f365;1.2 插入操作&#x1f365;1.3 查找操作&#x1f365;1.4 删除操作&#x1f365;1.5 清空操作 &#x1f9c0;2、ArrayList的说明&#x1f9c0;3、ArrayList使用&#x1f365;3.1 A…

网络安全全栈培训笔记(59-服务攻防-中间件安全CVE复现lSApacheTomcataNginx)

第59天 服务攻防-中间件安全&CVE复现&lS&Apache&Tomcata&Nginx 知识点&#xff1a; 中间件及框架列表&#xff1a; lIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins, GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Sprng,Flask,…

使用流服务器m7s对接gb28181

优&#xff1a;sip品牌兼容性比较好&#xff0c;大华&#xff0c;海康都稳定可以&#xff0c;srs的5.0 sip品牌兼容性大华没反应&#xff0c;akstream-sip 大华也有问题&#xff0c;wvp也还可以 缺&#xff1a;目前最新的4.7.4版本&#xff0c;&#xff0c;sip协议用udp正常&a…

从零开始 Linux(一):基础介绍与常用指令总结

从零开始 Linux 01. 概念理解 1.1 什么是 Linux&#xff1f; Linux 是一个开源免费的 操作系统&#xff0c;具有很好的稳定性、安全性&#xff0c;且有很强的处理高并发的能力 Linux 的应用场景&#xff1a; 可以在 Linux 下开发项目&#xff0c;比如 JavaEE、大数据、Python…

Flink中StateBackend(工作状态)与Checkpoint(状态快照)的关系

State Backends 由 Flink 管理的 keyed state 是一种分片的键/值存储&#xff0c;每个 keyed state 的工作副本都保存在负责该键的 taskmanager 本地中。另外&#xff0c;Operator state 也保存在机器节点本地。Flink 定期获取所有状态的快照&#xff0c;并将这些快照复制到持…

Adobe Photoshop 2024 v25.4.0 - 专业的图片设计软件

Adobe Photoshop 2024 v25.4.0更新了&#xff0c;从照片编辑和合成到数字绘画、动画和图形设计&#xff0c;任何您能想象到的内容都能通过PS2024轻松实现。 利用人工智能技术进行快速编辑。学习新技能并与社区分享您的工作。借助我们的最新版本&#xff0c;做令人惊叹的事情从未…

持续集成 CI/CD

CI和CD代表持续集成和持续交付/持续部署。简而言之&#xff0c;CI 是一种现代软件开发实践&#xff0c;其中频繁且可靠地进行增量代码更改。由 CI 触发的自动构建和测试步骤确保合并到存储库中的代码更改是可靠的。然后&#xff0c;作为 CD 流程的一部分&#xff0c;快速、无缝…