问题
大多数 Cisco 设备通过控制台通信时使用的默认字符编码是什么?
背景
我是一名软件开发人员,正在编写一个应用程序,通过控制台端口与多个思科设备交互(基本上,它运行 IOS 配置命令并响应某些反馈,例如错误)。
我的软件在 mac/windows/linux 下运行,每个操作系统都有自己的默认字符编码系统。因此,当我向控制台发送字节和从控制台接收字节时,我必须非常小心。如果我没有指定正确的字符编码,事情就会以奇怪的方式中断。例如,当我在发送命令后“按回车键”时,在某些系统上,它会“按回车键”两次,而不是一次!或者,当我收到数据并试图理解它时,程序会因错误的字节/字符转换而感到困惑。
概括
如果我打开新的(或刚刚重置的)Cisco 3845 或 2955 并通过控制台连接并来回发送数据/字节/字符......
设备默认将使用什么编码。我怀疑是 UTF-8。
答案1
如果是美国设备,我想我可以放心地说它只是使用 ASCII 作为其普通文本。它可能不会执行任何类型的字符集检查,因此用户定义的名称可以是任何字符集,只要单个字节对设备而言有效即可。如果您从串行连接收到乱码,则端口配置不正确。当我年轻时,实际上经常使用串行端口,我有时可以识别出乱码的类型并确定哪个设置是错误的。
至于回车键的问题,无论您是从 Windows(换行符为\r\n
)还是 Unix(\n
)或 Mac(\r
)连接,设备都会使用相同的字符来表示“回车”,选择一个正常工作的,它应该总是可以正常工作。根据您的连接方式(直接连接到串行端口设备或控制终端应用程序?),可能会有“本地回显”之类的设置,导致您键入的内容由终端应用程序打印在屏幕上(大多数设备都会为您回显文本,因此打开本地回显会导致所有字母重复)
答案2
没有什么比普通的 ASCII 更复杂。我知道 UTF-8 向后兼容,所以你应该可以接受。
顺便说一句,我一直在编写程序来控制和获取各种思科设备的报告,一开始我使用控制台连接,但很快意识到这真的不是一个长期的解决方案,你最终会使用 SNMP 来处理任何复杂的事情。
主要原因是 CLI 的响应并不总是一致的,而且几乎肯定会在 IOS 版本之间发生变化,第二个原因是 SNMP 虽然乍一看似乎很复杂,但它是为从网络获取信息和更改设置而设计的,是标准的,并且始终会提供一致的结果。这只是我的一点看法。
答案3
免责声明:我不是软件开发人员=)
以下文档有帮助吗?它在许多方面讨论了“字符集”——包括默认值。我不太确定这是否与“字符编码”相同,至少在您询问的上下文中是这样。
http://www.cisco.com/en/US/docs/ios/12_1/configfun/command/reference/frd1003.html