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

news2024/11/24 5:08:35

当我们写的程序含有控制台(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.coloradmin.cn/o/1422595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mkcert的安装和使用,5分学会在本地开启localhost的https访问方式

mkcert官方仓库地址:https://github.com/FiloSottile/mkcert#installation mkcert 是一个简单的工具,用于制作本地信任的开发证书。它不需要配置。 简化我们在本地搭建 https 环境的复杂性,无需操作繁杂的 openssl 实现自签证书了&#xff…

【开源操作系统】上海道宁为您带来稳定、安全、开源和易用的操作系统——Ubuntu,为您的数字化生活保驾护航

Ubuntu是 源于非洲的一种传统价值观 意为“人性、关爱和共享” 这种价值观在 开源、稳定、安全、易用的 Ubuntu操作系统中 得到了完美的体现 除此之外,Ubuntu还具有 强大的安全性 它自带了诸多安全功能 如防火墙、加密文件系统等 可以有效地保护用户的隐私…

CRF条件随机场学习记录

阅读建议 仔细阅读书[1]对应的序列标注章节,理解该方法面向的问题以及相关背景,然后理解基础的概念。 引言 威胁情报挖掘的相关论文中,均涉及到两部分任务:命名实体识别(Named Entity Recognition,NER&a…

【PyCharm教程】PyCharm 安装、卸载和升级包

PyCharm 为特定的 Python 解释器提供了安装、卸载和升级 Python 包的方法。默认情况下,PyCharm 使用 pip 来管理项目包。对于 Conda 环境,您可以使用conda 包管理器。 在 PyCharm 中,您可以在Python 包工具窗口和 Python 解释器Settings/Pre…

C语言——深入理解指针3

目录 1. 数组名的理解1. 数组名1.2 数组名理解的特例 2. 使用指针访问数组3. 一维数组传参的本质4. 冒泡排序4.1 冒泡排序的概念4.2 冒泡排序的优化 5. 二级指针5.1 二级指针的概念5.2 二级指针的运算 6. 指针数组7. 指针数组模拟二维数组 1. 数组名的理解 1. 数组名 在上⼀个…

重生奇迹MU 骑装选择攻略--剑士

剑士作为唯一一个攻防兼备的近战职业,战士大部分时间需要承担团队的坦克职责,因此我们需要尽可量的提升自己的血量以及防御属性,这样才能在面对敌人和大量野怪时保护好我方的后排目标,并且保证自己能够在猛烈的攻击下支撑更长的时…

HarmonyOS 线程讲解(任务分发、线程通信)

一、简单说明 说起鸿蒙的线程就不得不说Android的线程,相信都知道在Android中,每一个应用都会有自己的主线程和其他的子线程,主线程负责处理大部分业务,负责UI的显示和更新等操作,所以又称之为UI线程,同时…

Docker的使用方式

一、Docker概念 Docker类似于一个轻量的虚拟机。 容器和镜像是Docker中最重要的两个概念,镜像可以保存为tar文件,Dockerfile是配置文件,仓库保存了很多第三方已经做好的镜像。 基本指令 查找镜像 docker search nginx 拉取nginx镜像 do…

文件归类整理,文件归类软件

数字化时代,我们经常面对的一个问题是:电脑中的文件越积越多,找起东西来如同大海捞针。这个时候,一款好的文件归类软件无疑能够帮你节省大量的时间和精力。那还等什么?快来试试这款【文件批量改名高手】软件吧&#xf…

MyISAM和InnoDB区别

MyISAM是括全文索引、压缩、空间函数等,但MyISAM不支持事MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.…

Leetcode—1828. 统计一个圆中点的数目【中等】

2024每日刷题&#xff08;一零五&#xff09; Leetcode—1828. 统计一个圆中点的数目 实现代码 class Solution { public:vector<int> countPoints(vector<vector<int>>& points, vector<vector<int>>& queries) {vector<int> a…

WIN11 - WSL(Windows Subsystem for Linux) 安装教程

前言 WSL&#xff0c;即Windows Subsystem for Linux&#xff0c;是一种在Windows操作系统上运行Linux二进制文件的兼容层。该层提供了Linux环境和GNU工具&#xff0c;可以在Windows系统上运行Linux应用程序。WSL使得开发人员可以在Windows系统上使用Linux工具和命令行界面&am…

GIS系统的类型

GIS&#xff08;地理信息系统&#xff09;系统是一种用于采集、存储、管理、分析和展示地理信息的软件系统。这些系统可以根据其功能和应用领域划分为不同的类型。以下是一些常见类型的GIS系统以及在其开发中的关键考虑因素&#xff0c;希望对大家有所帮助。北京木奇移动技术有…

万兆电口模块10GBase-T:提升网络性能的利器

随着数字化时代的到来&#xff0c;数据传输速度已经成为各行各业不可或缺的一项需求。而在数据中心和企业网络中&#xff0c;网络设备也正面临着越来越高的带宽需求。在满足这一需求的过程中&#xff0c;万兆电口模块10GBase-T成为了一种重要的解决方案。本文将围绕万兆电口模块…

ElementUI组件:Link 文字链接

ElementUI安装与使用指南 Link 文字链接 点击下载learnelementuispringboot项目源码 效果图 el-link.vue页面效果图 项目里el-link.vue文件代码 <script> export default {name: el_link }</script> <!--https://element.eleme.cn/#/zh-CN/component/link …

数据结构—栈实现前缀表达式的计算

前缀表达式计算 过程分析 中缀表达式&#xff1a;&#xff08;1 5&#xff09;*3 > 前缀表达式&#xff1a;*153 &#xff08;可参考这篇文章&#xff1a;中缀转前缀&#xff09; 第一步&#xff1a;从右至左扫描前缀表达式&#xff08;已存放在字符数组中&#xff09;&a…

百川终入海 ,一站式海量数据迁移工具 X2Doris 正式发布

在大数据分析领域&#xff0c;Apache Doris 作为广受认可的开源实时数据仓库&#xff0c;已经在越来越多行业用户的真实业务场景中得到广泛应用&#xff0c;成为许多企业数据分析基础设施的重要基座。尤其在过去一年多的时间里&#xff0c;越来越多企业选择基于 Apache Doris 进…

LeetCode.2808. 使循环数组所有元素相等的最少秒数

题目 题目链接 分析 我们最终形成的数组一定是当前数组nums 中的一个数字。 所以我们的想法就是枚举数组 nums 中的所有数字&#xff0c;取最小值。 题目告诉我们每一秒都可以向左右扩散一位&#xff0c;那么多个相同的 x 同时扩散&#xff0c;扩散完整个数组耗时就取决于两…

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

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

NFTScan 与 Merlin Protocol 共同推出 BRC20 Indexer Oracle,于今日正式上线!

近日&#xff0c;NFT 数据基础设施 NFTScan 与 Merlin Protocol 进行战略合作&#xff0c;联合推出了比特币网络原生资产 Indexer Oracle 服务&#xff0c;现在该服务已在 NFTScan 开发者平台上线&#xff0c;任何开发者都可以注册使用&#xff01; Merlin Protocol 是一个专用…