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.mzph.cn/news/657259.shtml

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

相关文章

CVE-2024-0352 likeshop v2.5.7文件上传漏洞分析

本次的漏洞研究基于thinkPHP开发开的一款项目..... 漏洞描述 Likeshop是Likeshop开源的一个社交商务策略的完整解决方案,开源免费版基于thinkPHP开发。Likeshop 2.5.7.20210311及之前版本存在代码问题漏洞,该漏洞源于文件server/application/api/contr…

云原生Kubernetes: Ubuntu 安装 K8S 1.23版本(单Master架构) 及故障恢复

目录 一、实验 1.环境 2.安装 Ubuntu 3.连接Ubuntu 4.master节点安装docker 5.node节点安装docker 6.master节点安装K8S 7.添加K8S工作节点 8.安装网络插件calico 9.故障 10.故障恢复 11.测试k8s网络和coredns 二、问题 1.Ubuntu如何修改镜像源 2.Ubuntu和Windo…

DataTable.Load(reader)注意事项

对于在C#中操作数据库查询,这样的代码很常见: using var cmd ExecuteCommand(sql); using var reader cmd.ExecuteReader(); DataTable dt new DataTable(); dt.Load(reader); ...一般的查询是没问题的,但是如果涉及主键列的查询&#xf…

交叉注意力融合时域、频域特征的FFT + CNN-Transformer-CrossAttention轴承故障识别模型

目录 往期精彩内容: 前言 1 快速傅里叶变换FFT原理介绍 第一步,导入部分数据 第二步,故障信号可视化 第三步,故障信号经过FFT可视化 2 轴承故障数据的预处理 2.1 导入数据 2.2 制作数据集和对应标签 3 交叉注意力机制 …

网站地址怎么改成HTTPS?

现在,所有类型的网站都需要通过 HTTPS 协议进行安全连接,而实现这一目标的唯一方法是使用 SSL 证书。如果您不将 HTTP 转换为 HTTPS,浏览器和应用程序会将您网站的连接标记为不安全。 但用户询问如何将我的网站从 HTTP 更改为 HTTPS。在此页…

移动端设计规范 - 文字使用规范

这是一篇关于移动端产品界面设计时,文字大小的使用规范,前端人员如果能了解一点的话,在实际开发中和设计沟通时,节省沟通成本,也能提高设计落地开发时的还原度。 关于 在做移动端产品设计时,有时候使用文字…

【开源精选导航】GitHub-Chinese-Top-Charts:一榜在手,优质中文项目轻松找寻

各位热爱开源技术的朋友们,你们是否有过这样的困扰:面对浩瀚的GitHub海洋,想找寻那些具有高质量中文文档的优秀开源项目却无从下手?今天,我们就为大家揭晓一个宝藏般的开源项目——GitHub 中文项目集合(访问…

二维数组移动,合并数值简易2048

2848简易核心运算 --多元素合并数组举例4*4 -- 星空露珠韩永旗制作 --数据合并并重新赋值 --多元素合并数组举例4*4 -- 星空露珠韩永旗制作 --数据合并并重新赋值 local data{{0,2,0,2}, {4,2,0,8}, {8,0,8,4}, {2,2,4,8}} local ch{{1…

【Node.js基础】Node.js的介绍与安装

文章目录 前言一、什么是Node.js?二、安装Node.js2.1 Windows系统2.2 macOS系统2.3 Linux系统 三、运行js代码总结 前言 随着互联网技术的不断发展,构建高性能、实时应用的需求日益增长。Node.js作为一种服务器端运行时环境,以其事件驱动、非…

万户 ezOFFICE SendFileCheckTemplateEdit.jsp SQL注入漏洞

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

从比亚迪的整车智能战略,看王传福的前瞻市场布局

众所周知,作为中国新能源汽车的代表企业,比亚迪在中国乃至全球的新能源汽车市场一直都扮演着引领者的角色。2024年新年伊始,比亚迪又为新能源汽车带来了一项重磅发布。 整车智能才是真智能 近日,在“2024比亚迪梦想日”上&#xf…

基于二值化图像转GCode的斜向扫描实现

基于二值化图像转GCode的斜向扫描实现 什么是斜向扫描斜向扫描代码示例 基于二值化图像转GCode的斜向扫描实现 什么是斜向扫描 在激光雕刻中,斜向扫描(Diagonal Scanning)是一种雕刻技术,其中激光头沿着对角线方向来回移动&…

编译opencv4.6问题汇总,第三方软件包见我发的资源

win10系统 python3.8.2,cmake-3.15.5-win64-x64,opencv4.6 编译方式见:OpenCV的编译 - 知乎 本文主要总结问题。赠人玫瑰手留余香。 问题1 Problem with installing OpenCV using Visual Studio and CMake (error code: MSB3073) 解决方法…

c# textbox 提示文字

1. 定义提示文字内容 private readonly string RemarkText "最多输入100字"; // 提示文字 2. 添加textbox 焦点事件, 初始化textbox提示文字和字体颜色 public UserControl(){InitializeComponent();tb_Remark.Text RemarkText;tb_Remark.ForeColor…

微信小程序(二十六)列表渲染基础核心

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.列表渲染基础写法 2.外部索引和自身索引 源码&#xff1a; index.wxml <view class"students"><view class"item"><text>序号</text><text>姓名</text…

字符串中的单词反转【leetcode】

本题选自leetcode图解算法数据结构一书 你在与一位习惯从右往左阅读的朋友发消息&#xff0c;他发出的文字顺序都与正常相反但单词内容正确&#xff0c;为了和他顺利交流你决定写一个转换程序&#xff0c;把他所发的消息 message 转换为正常语序。 注意&#xff1a;输入字符串…

走迷宫-bfs

package Test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {static int N 110,hh 0,tt -1,n,m;static int[][] g new int[N][N]; //用来存储迷宫static int[][] d new int[N][N]; //用来存储d[i…

【C/Python】Gtk部件ListStore的使用

一、C语言 在GTK中&#xff0c;Gtk.ListStore是一个实现了Gtk.TreeModel接口的存储模型&#xff0c;用于在如Gtk.TreeView这样的控件中存储数据。以下是一个简单的使用Gtk.ListStore的C语言示例&#xff0c;该示例创建了一个列表&#xff0c;并在图形界面中显示&#xff1a; …

EasyExcel实现Excel文件导入导出

1 EasyExcel简介 EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址: https://github.com/alibaba/easyexcel 官方文档: https://www.yuque.com/easyexcel/doc/easyexcel Excel解析流程图: EasyExcel读取…

TensorFlow2实战-系列教程11:RNN文本分类3

&#x1f9e1;&#x1f49b;&#x1f49a;TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 6、构建训练数据 所有的输入样本必须都是相同shape&#xff08;文本长度&#xff0c;…