一种检测命令行界面编码方式的方法及装置与流程

文档序号:12550642阅读:324来源:国知局
一种检测命令行界面编码方式的方法及装置与流程

本申请涉及字符编码技术领域,特别涉及一种检测命令行界面编码方式的方法及装置。



背景技术:

命令行客户端是一种常见的计算机系统配置工具,用户可以通过在命令行客户端的命令行界面输入文本命令以对系统进行管理。传统方式中,命令行只支持全英文的输入和输出,随着计算机技术在世界各地普及并本地化,计算机设备开始支持英文以外的其它语言在命令行界面上输入和输出。

英文字符全部属于ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)字符,其编码方式是固定的,因此命令行界面在输入和输出英文时,无需做任何处理,而对于英文以外的一些语言,由于属于非ASCII字符,每个字符在不同的编码方式中占用的字节数是不同的。以中文为例,中文字符在GBK(Chinese Internal Code Specification,汉字编码字符集)族字符编码中占2个字节,在UTF-8(8-bit Unicode Transformation Format)占3个字节。同一汉字在不同的编码方式中完全不同,因此当命令行客户端与计算机系统针对文字字符不属于ASCII字符的语言采用不同编码方式时,命令行客户端无法对计算机系统产生作用。

当命令行客户端与计算机系统针对同一非ASCII字符的语言采用不同的编码方式时,用户往往不知道应该如何配置。



技术实现要素:

有鉴于此,本申请提供一种检测命令行界面编码方式的方法及装置,用以解决命令行客户端与计算机系统对于不属于ASCII字符的文字字符采用不同的编码方式时,命令行界面无法对计算机系统产生作用,而用户不知道如何配置的问题。

具体地,本申请是通过如下技术方案实现的:

一种检测命令行界面编码方式的方法,应用于命令行客户端所在终端设备,包括:

响应于用户在命令行界面输入的语言切换命令,将所述终端设备的语言模式切换至支持非ASCII字符的目标语言;

确定所述终端设备支持的针对所述目标语言的第一编码方式;以及,所述命令行客户端支持的针对所述目标语言的第二编码方式;

在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第一提示文本;以及,基于所述第二编码方式编码的第二提示文本,以使用户在所述第一提示文本以及所述第二提示文本中正常解码显示的提示文本的提示下,为所述命令行界面重新设置编码方式。

在所述检测命令行界面编码方式的方法中,还包括:

当无法确定出所述命令行客户端支持的针对所述目标语言的第二编码方式时,在所述命令行界面输出对应于所述目标语言的所述第一提示文本,以及基于预设的编码方式集合中各预设的编码方式分别进行编码后的所述第二提示文本。

在所述检测命令行界面编码方式的方法中,还包括:

当所述预设的编码方式集合中的第三编码方式,为所述第一编码方式的子集时,在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第三提示文本;所述第三提示文本包括仅所述第一编码方式能够正确解析的特殊字符;以及,

当所述第一编码方式为所述预设编码方式集合中的第四编码方式的子集时,在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第四提示文本;所述第四提示文本包括仅所述第四编码方式能够正确解析的特殊字符。

在所述检测命令行界面编码方式的方法中,还包括:

在所述命令行界面输出对应于支持ASCII字符的语言编辑的所述第二提示文本。

在所述检测命令行界面编码方式的方法中,所述第一提示文本为当前文本正常解码显示时忽略其它提示文本的提示消息;所述第二提示文本为当前文本正常解码显示时将所述命令行客户端的编码方式修改为所述第一编码方式的提示消息;所述第三提示文本为所述特殊字符无法解码显示时将所述命令行客户端的编码方式修改为所述第一编码方式的提示消息;所述第四提示文本为所述特殊字符正常解码显示时将所述命令行客户端的编码方式修改为所述第一编码方式的提示消息。

一种检测命令行界面编码方式的装置,应用于命令行客户端所在终端设备,包括:

切换单元,用于响应于用户在命令行界面输入的语言切换命令,将所述终端设备的语言模式切换至支持非ASCII字符的目标语言;

确定单元,用于确定所述终端设备支持的针对所述目标语言的第一编码方式;以及,所述命令行客户端支持的针对所述目标语言的第二编码方式;

输出单元,用于在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第一提示文本;以及,基于所述第二编码方式编码的第二提示文本,以使用户在所述第一提示文本以及第二提示文本中正常解码显示的提示文本的提示下,为所述命令行界面重新设置编码方式。

在所述检测命令行界面编码方式的装置中,还包括:

所述输出单元,进一步用于当无法确定出所述命令行客户端支持的针对所述目标语言的第二编码方式时,在所述命令行界面输出对应于所述目标语言的所述第一提示文本,以及基于预设的编码方式集合中各预设的编码方式分别进行编码后的所述第二提示文本。

在所述检测命令行界面编码方式的装置中,还包括:

所述输出单元,进一步用于当所述预设的编码方式集合中的第三编码方式,为所述第一编码方式的子集时,在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第三提示文本;所述第三提示文本包括仅所述第一编码方式能够正确解析的特殊字符;以及,

当所述第一编码方式为所述预设编码方式集合中的第四编码方式的子集时,在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第四提示文本;所述第四提示文本包括仅所述第四编码方式能够正确解析的特殊字符。

在所述检测命令行界面编码方式的装置中,还包括:

所述输出单元,进一步用于在所述命令行界面输出对应于支持ASCII字符的语言编辑的所述第二提示文本。

在所述检测命令行界面编码方式的装置中,所述第一提示文本为当前文本正常解码显示时忽略其它提示文本的提示消息;所述第二提示文本为当前文本正常解码显示时将所述命令行客户端的编码方式修改为所述第一编码方式的提示消息;所述第三提示文本为所述特殊字符无法解码显示时将所述命令行客户端的编码方式修改为所述第一编码方式的提示消息;所述第四提示文本为所述特殊字符正常解码显示时将所述命令行客户端的编码方式修改为所述第一编码方式的提示消息。

在本申请中,当用户在命令行界面上切换语言模式时,命令行客户端所在终端设备响应于用户的操作,执行语言切换命令,将所述终端设备的语言模式切换至支持非ASCII字符的目标语言;所述终端设备确定本地支持的针对所述目标语言的第一编码方式,以及,所述命令行客户端支持的针对所述目标语言的第二编码方式;然后在所述命令行界面输出对应于所诉目标语言的基于所述第一编码方式的第一提示文本,以及,基于所述第二编码方式编码方第二提示文本,以使用户在所述第一提示文本以及所述第二提示文本中正常解码显示的提示文本的提示下,为所述命令行界面重新设置编码方式。

通过以上措施,从而使得用户可以更直观地确定当前命令行客户端与终端设备的编码方式是否相同,以及如何对客户端的编码方式进行修改。

附图说明

图1是本申请示出的一种检测命令行界面编码方式的方法的流程图;

图2是本申请示出的一种检测命令行界面编码方式的装置的实施例框图;

图3是本申请示出的一种检测命令行界面编码方式的装置的硬件结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。

属于非ASCII字符的目标语言由不同的编码方式编码后往往互相不兼容,在某一种编码方式中的某一字符的字符编码在另一种编码方式中可能会被解析成完全不同的字符(或者无法解析,显示不出来)。

命令行客户端在处理从命令行客户端所在的终端设备输出的字符时,需根据用户配置的编码方式对终端设备输出的字节流进行解析。当命令行客户端切换语言模式为属于非ASCII字符的目标语言后,如果命令行客户端与终端设备针对该目标语言配置的编码方式不一致,则终端设备输出的非ASCII字符在命令行界面上会显示为乱码;而用户通过命令行界面向终端设备输入的指令也无法被终端设备的系统所识别。

另外有一种命令行客户端与终端设备针对目标语言配置的编码方式不一致的情况为,命令行客户端或终端设备上配置的编码方式为对方的编码方式的子集。例如,终端设备使用GBK(Chinese Internal Code Specification,汉字编码字符集)编码,而命令行客户端使用GB2312编码。当终端设备输出不属于GB2312的字符时,命令行界面将无法正常显示。类似的,如果终端设备使用GB2312编码,而命令行客户端使用GBK编码,当用户输入不属于GB2312的字符时,终端设备将无法识别。

因此,命令行客户端和命令行客户端所在的终端设备针对属于非ASCII字符的目标语言,必须配置相同的编码方式。

然而,由于不同的终端设备的系统、不同的命令行客户端的差异造成了管理上的不便,因此,命令行客户端的针对任一非ASCII字符的编码方式不可能与所有终端设备的系统默认的编码方式相同,用户在通过命令行客户端管理终端设备的系统时,总是需要对命令行客户端的编码方式进行设置。实际上大多数普通用户并不理解字符编码的原理,也不知道终端设备的系统和命令行客户端分别使用的是哪种编码方式,也就不懂应该如何为命令行客户端配置正确的编码方式了。

为解决上述问题,本申请实施例的技术方案,在命令行客户端响应于用户输入的语言切换命令,将语言模式切换至支持非ASCII字符的目标语言时,在命令行界面输出对应于所述目标语言的基于命令行客户端的编码方式编码的提示文本,以及,基于终端设备的编码方式编码的提示文本。通过上述提示文本中能够正常解码显示的提示文本,提示用户为命令行客户端重新设置编码方式。

参见图1,为本申请示出的一种检测命令行界面编码方式的方法的流程图,该方法的执行主体是命令行客户端所在终端设备;所述方法包括以下步骤:

步骤101:响应于用户在命令行界面输入的语言切换命令,将所述终端设备的语言模式切换至支持非ASCII字符的目标语言。

步骤102:确定所述终端设备支持的针对所述目标语言的第一编码方式;以及,所述命令行客户端支持的针对所述目标语言的第二编码方式。

步骤103:在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第一提示文本;以及,基于所述第二编码方式编码的第二提示文本,以使用户在所述第一提示文本以及所述第二提示文本中正常解码显示的提示文本的提示下,为所述命令行界面重新设置编码方式。

上述命令行客户端,包括Windows系统的超级终端、putty、secureCRT等。

上述终端设备,包括可以安装上述命令行客户端,并响应用户通过上述命令行客户端发起的命令的网络设备,例如,计算机。

由于终端设备的系统与命令行客户端的多样性,以及,针对同一种非ASCII字符的编码方式的多样性,终端设备的系统与命令行客户端对于同一种非ASCII字符的编码方式的选择很可能是不同的。在这种情况下,用户需将命令行客户端的编码方式配置为终端设备选择的编码方式。

终端设备的系统通常默认只支持ASCII模式(例如英文模式),当有输入非ASCII字符的必要时,再由用户主动切换成其它字符(例如中文模式)。在本申请实施例中,当用户在命令行界面输入语言切换命令时,命令行客户端所在终端设备可以响应于该语言切换命令,将终端设备的语言模式切换至支持非ASCII字符的目标语言。

在本申请实施例中,命令行客户端所在终端设备将语言模式切换至上述目标语言后,可以获取本地支持的针对上述目标语言的第一编码方式;并确定命令行客户端支持的针对上述目标语言的第二编码方式,由于命令行客户端与终端设备的系统之间不存在对接协调编码方式的接口,终端设备无法准确的确定命令行客户端针对上述目标语言的编码方式,以此,上述第二编码方式为终端设备预估的该命令行客户端针对上述目标语言的编码方式。

在本申请实施例中,命令行客户端所在终端设备确定上述第一编码方式和上述第二编码方式后,可以构建对应于上述目标语言的基于上述第一编码方式编码的第一提示文本和基于上述第二编码方式编码的第二提示文本。其中,该第一提示文本可以是当前文本正常解码显示时忽略其他提示文本的提示消息;该第二提示文本可以是当前文本正常解码显示时将命令行客户端的编码方式修改为上述第一编码方式的提示消息。

在本申请实施例中,命令行客户端所在终端设备可以在命令行界面输出上述第一提示文本和上述第二提示文本,以使用户在上述第一提示文本和上述第二提示文本中正常解码显示的提示文本的提示下,为命令行客户端重新设置编码方式。

例如:终端设备响应于用户在命令行界面上输入的语言切换命令,将本地的语言模式由英文模式切换为中文模式。终端设备针对中文支持的第一编码方式为UTF-8(8-bit Unicode Transformation Format),终端设备预估的该命令行客户端针对中文支持的第二编码方式为GBK编码。

终端设备构建的对应于中文的基于UTF-8编码的第一提示文本为:

“改变到中文模式。当前命令行客户端的编码方式设置正确,请忽略以下信息。”

终端设备构建的对应于中文的基于GBK编码的第二提示文本为:

“改变到中文模式。当前命令行客户端的编码方式设置错误,请将编码方式设置为UTF-8。”

第一种情况,如果命令行客户端的编码方式设置正确,即命令行客户端与终端设备针对中文配置的编码方式都是UTF-8,则上述第一提示文本可以在命令行界面上正常解码显示,而上述第二提示文本会显示为乱码。此时,用户根据上述第一提示文本的内容可知命令行客户端的编码方式设置正确,无需更改。

第二种情况,如果命令行客户端的编码方式设置错误,即命令行客户端与终端设备针对中文配置的编码方式不同,命令行客户端配置的编码方式为GBK,则上述第一提示文本在命令行界面上显示为乱码,而上述第二提示文本可以在命令行界面上正常解码显示。此时,用户根据上述第二提示文本可知命令行客户端的编码方式设置错误,需更改为UTF-8。

在示出的一种实施方式中,由于终端设备可能无法准确预估该命令行客户端可能支持的针对上述目标语言的第二编码方式,因此,可以用一个预设的编码方式集合替代该第二编码方式。其中,该编码方式集合中包括多种命令行客户端可能配置的编码方式。

在这种情况下,命令行客户端所在终端设备可以在命令行界面中输出基于上述第一编码方式编码的上述第一提示文本,以及基于预设的编码方式集合中各预设的编码方式分别进行编码后的上述第二提示文本。

如果命令行客户端的编码方式设置正确,则上述第一提示文本可以在命令行界面上正常解码显示,而上述第二提示文本全部为乱码。用户根据上述第一提示文本可知命令行客户端的编码方式设置正确,无需更改。

另外,如果命令行客户端的编码方式设置错误,由于上述第二提示文本由多种编码方式编码后输出,通常情况下,总有一种编码方式为命令行客户端配置的编码方式,该编码方式编码的第二提示文本能够正常解码显示。因此,用户可以从正常解码显示的上述第二提示文本中获知命令行客户端的编码方式设置错误,需更改为上述第一编码方式。

在示出的一种实施方式中,为防止终端设备无法预估该命令行客户端可能支持的针对上述目标语言的第二编码方式,导致用户无法根据正常解码显示的上述第二提示文本将命令行客户端配置错误的编码方式更改为上述第一编码方式。终端设备可以命令行界面输出对应于支持ASCII字符的语言编辑的上述第二提示文本。例如,终端设备可以在最后再加一条纯英文的提示信息:

“If all of the information above are unrecognized,DO set the character encoding of the current command line tools to XXX!”

其中,XXX为上述第一编码方式。用户可以根据最后这条根据支持ASCII字符的语言编辑的消息,获知命令行客户端的编码方式配置错误,并进行更改。

在本申请实施例中,命令行客户端上配置的编码方式可能为终端设备配置的编码方式的子集,即上述预设的编码方式结合中存在第三编码方式,为上述第一编码方式的子集。上述第一提示文本和上述第二提示文本都能正常显示,但意思互相矛盾,会给用户造成困扰。

因此,命令行客户端所在终端设备可以获得上述第一编码方式和上述第三编码方式后,在命令行界面输出基于上述第一编码方式编码的第三提示文本。其中,该第三提示文本可以包括仅上述第一编码方式能够正确解析的特殊字符;该第三提示文本可以为该特殊字符无法解码显示时将命令行客户端的编码方式修改为上述第一编码方式的提示消息。

例如:终端设备针对中文配置的第一编码方式为GBK编码时,命令行客户端可能配置的第三编码方式为GB2312。在这种情况下,终端设备可以在命令行界面输出包括仅上述GBK能够正确解析的特殊字符的第三提示文本,上述特殊字符可以是GBK编码中存在日本、韩国独有的汉字,在GB2312中无法识别。

该第三提示文本可以如下所示:

“如果本行末尾的文字能够正常显示,说明当前命令行客户端的编码方式设置正确,否则请将命令行客户端的编码方式设置为GBK:XX”(XX代表一个GB2312无法解析而GBK编码能够解析的汉字)

第一种情况,命令行客户端的编码方式与终端设备的相同,为GBK编码,则XX能够正常显示,用户无需更改编码方式;

第二种情况,命令行客户端的编码方式确实为终端设备的编码方式的子集,则XX无法正常显示,用户通过上述第三提示文本可以将命令行客户端的编码方式设置为第一编码方式。

在示出的一种实施方式中,终端设备上配置的编码方式可能为命令行客户端配置的编码方式的子集,即上述预设的编码方式集合中存在第四编码方式,上述第一编码方式为该第四编码方式的子集。这种情况与前文的情况相反,但是同样会因为上述第一提示文本和上述第二提示文本都能正常显示,但意思互相矛盾,给用户造成困扰。

因此,命令行客户端所在终端设备可以获得上述第一编码方式和上述第四编码方式后,在命令行界面输出基于上述第一编码方式编码的第四提示文本。其中,该第四提示文本可以包括仅上述第四编码方式能够正确解析的特殊字符;该第四提示文本可以为该特殊字符正常解码显示时将命令行客户端的编码方式修改为上述第一编码方式的提示消息。

例如:终端设备针对中文配置的第一编码方式为GB2312时,命令行客户端可能配置的第四编码方式为GBK。在这种情况下,终端设备可以在命令行界面输出包括仅上述GBK能够正确解析的特殊字符的第四提示文本上述特殊字符可以是GBK编码中存在日本、韩国独有的汉字,在GB2312中无法识别。

该第四提示文本可以如下所示:

“如果本行末尾的文字无法正常显示,说明当前命令行客户端的编码方式设置正确,否则请将命令行客户端的编码方式设置为GBK:XX”(XX代表一个GB2312无法解析而GBK编码能够解析的汉字)

第一种情况,命令行客户端的编码方式与终端设备的相同,为GB2312编码,则XX无法正常显示,用户无需更改编码方式;

第二种情况,终端设备的编码方式确实为命令行客户端的编码方式的子集,则XX能够正常显示,用户通过上述第四提示文本可以将命令行客户端的编码方式设置为第一编码方式。

综上所述,在本申请实施例中,当用户输入语言切换命令,选择支持非ASCII字符的目标语言时,命令行客户端所在终端设备响应于用户在命令行界面输入的语言切换命令,将本地的语言模式切换至支持非ASCII字符的目标语言,然后确定本地支持的针对上述目标语言的第一编码方式,以及,该终端设备预估的该命令行客户端支持的针对上述目标语言的第二编码方式;终端设备在命令行界面输出对应于上述目标语言的基于上述第一编码方式编码的第一提示文本,以及,基于上述第二编码方式编码的第二提示文本。

并在命令行客户端的编码方式可能为第一编码方式的子集的情况下,输出基于第一编码方式编码的第三提示文本,以及,在第一编码方式可能是命令行客户端的编码方式的子集的情况下,输出基于第一编码方式编码的第四提示文本。通过上述措施,确保用户可以直观地通过命令行界面上的提示文本获知命令行客户端配置的编码方式是否与终端设备配置的编码方式相同,并在不同的情况下,将命令行客户端的编码方式更改为上述第一编码方式。

与本申请检测命令行界面编码方式的方法的实施例相对应,本申请还提供了用于执行上述方法实施例的装置的实施例。

参见图2,为本申请示出的一种检测命令行界面编码方式的装置的实施例框图:

如图2所示,该检测命令行界面编码方式的装置20包括:

切换单元210,用于响应于用户在命令行界面输入的语言切换命令,将所述终端设备的语言模式切换至支持非ASCII字符的目标语言。

确定单元220,用于确定所述终端设备支持的针对所述目标语言的第一编码方式;以及,所述命令行客户端支持的针对所述目标语言的第二编码方式。

输出单元230,用于在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第一提示文本;以及,基于所述第二编码方式编码的第二提示文本,以使用户在所述第一提示文本以及第二提示文本中正常解码显示的提示文本的提示下,为所述命令行界面重新设置编码方式。

在本例中,所述装置还包括:

所述输出单元230,进一步用于当无法确定出所述命令行客户端支持的针对所述目标语言的第二编码方式时,在所述命令行界面输出对应于所述目标语言的所述第一提示文本,以及基于预设的编码方式集合中各预设的编码方式分别进行编码后的所述第二提示文本。

在本例中,所述装置还包括:

所述输出单元230,进一步用于当所述预设的编码方式集合中的第三编码方式,为所述第一编码方式的子集时,在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第三提示文本;所述第三提示文本包括仅所述第一编码方式能够正确解析的特殊字符;以及,

当所述第一编码方式为所述预设编码方式集合中的第四编码方式的子集时,在所述命令行界面输出对应于所述目标语言的基于所述第一编码方式编码的第四提示文本;所述第四提示文本包括仅所述第四编码方式能够正确解析的特殊字符。

在本例中,所述装置还包括:

所述输出单元230,进一步用于在所述命令行界面输出对应于支持ASCII字符的语言编辑的所述第二提示文本。

在本例中,所述第一提示文本为当前文本正常解码显示时忽略其它提示文本的提示消息;所述第二提示文本为当前文本正常解码显示时将所述命令行客户端的编码方式修改为所述第一编码方式的提示消息;所述第三提示文本为所述特殊字符无法解码显示时将所述命令行客户端的编码方式修改为所述第一编码方式的提示消息;所述第四提示文本为所述特殊字符正常解码显示时将所述命令行客户端的编码方式修改为所述第一编码方式的提示消息。

本申请检测命令行界面编码方式的装置的实施例可以应用在命令行客户端所在终端设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在命令行客户端所在终端设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请检测命令行界面编码方式的装置所在终端设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的终端设备通常根据该检测命令行界面编码方式的装置的实际功能,还可以包括其他硬件,对此不再赘述。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1