Linux中的扩展Ascii



如何在Linux中打印这些字符?

│(ascii 179) ├(ascii 195)

─(ascii 196)

我找不到任何八进制值,将与echo -e "xxx"工作,任何想法?

在仔细研究了man printfinfo printf之后,我想我已经得到了这个工作

基本问题似乎是bash有一个内置的printf不工作。而且,不管man/info页面上有什么,说,U不起作用。但u仍然可以。

env printf 'u2502'

给我一个垂直的方框字符

如果你有合适的编码器来显示这些字符,你可以使用你提供的完全相同的代码或扩展的ASCII字符集(例如195对于├)。

在Linux上,我们缺乏非标准的扩展ASCII字符集支持——这就是它不显示的原因。然而,我发现了另一个可用于Linux的字符集,它几乎与扩展的ASCII字符集相似。IBM855。

所要做的就是将命令行应用程序的字符编码更改为IBM855。所有流行的画框字符都有相同的扩展ASCII字符集代码——这是最重要的。

你可以通过这个图像和这个图像来比较集合。

PS:如果您使用的是gnome-terminal,您可以通过点击菜单栏中的"Terminal"菜单->"set character encoding"->"add or Remove"添加IBM855字符集。查找IBM855,并添加它。现在只需在"terminal"->"set character encoding"->"Cyrillic (IBM855)"中选择编码。

这些箱子足够我做作业了。希望这对你有所帮助。:)

将字体转换为PC-8/CP437编码的字体,或者使用这些字符的Unicode值,编码为当前字符集

因为有些人可能仍然想知道这个…

请参阅使用iconv进行翻译的行。

打印Linux/bash脚本中所有的ascii/扩展ascii码CP437:

# heading index with div line
printf "n      "; # indent
for x in {0..15}; do printf "%-3x" $x; done;
printf "n%46sn" | sed 's/ /-/g;s/^/      /';
# two lines with dots to represent control chars
c=$(echo "fa" | xxd -p -r | iconv -f 'CP437//' -t 'UTF-8')
printf "%32s" | sed 's/../'"$c"'  /g;s/^/  0   /;s/$/nn/'
printf "%32s" | sed 's/../'"$c"'  /g;s/^/  1   /'
# convert dec to codepage 437 in a table
for x in {32..255};
do
  # newline every 16 translated code values
  (( x % 16 == 0 )) && printf "nn"
  # left index numbers
  let "n = x % 15"
  (( (x % 16) == 0 )) && printf "%-4x" $n | sed 's/0/f/;s/^/  /'
  # conversion of x integer value to symbol
  printf "%02x" $x | xxd -p -r | iconv -f 'CP437//' -t 'UTF-8' | sed 's/.*/&  /'
  # div line
  (( x == 127 )) && printf "%46s" | sed 's/ /-/g;s/^/      /;i '
done
printf "%46s" | sed 's/ /-/g;s/^/n      /;s/$/n      /'; # div line
for x in {0..15}; do printf "%-3x" $x; done;
echo

相关内容

  • 没有找到相关文章

最新更新