从/ dev / urandom读取时OSX终端打印问号

时间:2015-12-07 03:38:20

标签: macos encoding utf-8

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字节序列。

1 个答案:

答案 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字符。

this answer

这样的东西