我有一个字符串(未保存在文件中(,它可以包含ascii或非ascii字符。我想知道给定的字符串在linux中是包含ascii还是非ascii。我在命令行中传递字符串,而NOT在文件中。我尝试使用grep,但grep需要的是文件而不是字符串。
示例1
输入
abc$@
预期输出
给定的字符串是ascii。
示例2
输入
测试标签
预期输出
给定的字符串不是ascii。
感谢你的帮助。
感谢
如果您查看ASCII表,您可能会注意到它只使用7位来对其值进行编码,尽管字符存储在一个字节中。第8位(高位(从未设置。
我会迭代字符串中的字节,并检查第8位。如果设置了任何第8位,那么它可能不是ASCII干净的。
然而,如果你在用C语言编写shell脚本和程序,你最终要做的将大不相同。这条线索似乎很有希望:https://unix.stackexchange.com/questions/194435/check-whether-text-contains-non-ascii-characters-in-a-shell-script
您可以使用file
命令。此命令用于确定文件的类型。对于文本文件,它将输出编码(如果它是有效的(。
您可以将其与-b
标志一起使用,以仅显示编码。