从dev/random
阅读,给了我很多?
s:
$ head -n 1 /dev/random
???i??0?4?=K?"?0??^Yx??????b"??k?]?JD?Xǀ?ʝֹ??6;?% ???SW#,?z??6?&?V?/7@??H??????Vg?G?Y*Դ?T???[ޘ?fj?|_r?4?-E??"?.?l^u,??'?N?Ƒ???\?v????7S?\ԔJRcɁ??k??Sn?Ԟ?
??^?????a?M{?????~??????+???????EC????J̡
这让我觉得?
是我的终端无法正确显示的字符。我的终端设置显示为UTF-8。
这是编码问题吗?或者这是预期的,因为随机数可能并不总是编码有效字符?
我的目标是在命令行上轻松生成Unicode字符的随机序列。具体来说,每个有效的Unicode字节序列都应该出现一些非零的概率,并且不应出现无效的Unicode字节序列。
答案 0 :(得分:1)
/dev/random
将返回纯随机数据,而不是ASCII / UTF数据。 /dev/random
是一个字节数据流,其中每个字节可以是0到255之间的任何位置。因此,数据将无法在终端中正确打印。
命令如:
head -c 255 /dev/random | openssl base64
会给你ASCII letters and numbers only (Base64 data)。如果您正在寻找随机,有效的UTF数据,您需要编写一些生成随机数的程序(可能通过读取/dev/random
)并使用该数据来选择随机UTF字符。