小编Sam*_*Sam的帖子

为什么 awk 的 printf 将大于 127 的字符值解释为多字节字符?

ASCII 字符范围是从 0 到 127,在该范围内,awk 的带有 %c 格式说明符的 printf 输出一个字节的数据:

$ awk 'BEGIN{printf "%c", 97}'
a

$ awk 'BEGIN{printf "%c", 127}' | xxd
00000000: 7f

$ awk 'BEGIN{printf "%c", 127}' | xxd -b
00000000: 01111111
Run Code Online (Sandbox Code Playgroud)

但对于大于 127 的值,它将打印出多个字节:

$ awk 'BEGIN{printf "%c", 128}' | xxd
00000000: c280

$ awk 'BEGIN{printf "%c", 128}' | xxd -b
00000000: 11000010 10000000
Run Code Online (Sandbox Code Playgroud)

0xc280 的意义是什么?为什么 awk 输出该字符而不是 0x80?

awk ascii unicode

2
推荐指数
1
解决办法
1624
查看次数

标签 统计

ascii ×1

awk ×1

unicode ×1