次のコマンドは UTF-8 を使用しません。head -c 1M </dev/urandom >myfile.txt
ベストアンサー1
コードポイント0から0x7FFFFFFFまでのUTF-8エンコーディングが必要な場合(UTF-8エンコーディングアルゴリズムは元々処理するように設計されています):
< /dev/urandom perl -CO -ne '
BEGIN{$/=\4}
no warnings "utf8";
print chr(unpack("L>",$_) & 0x7fffffff)'
現在、Unicodeは0..D7FF、E000..10FFFFに制限されています(これらの文字の一部は割り当てられておらず、一部は割り当てられません(非文字で定義されています))。
< /dev/urandom perl -CO -ne '
BEGIN{$/=\3}
no warnings "utf8";
$c = unpack("L>","\0$_") * 0x10f800 >> 24;
$c += 0x800 if $c >= 0xd800;
print chr($c)'
欲しいなら分散文字を次にパイプできます。
uconv -x '[:unassigned:]>;'
または、次のように変更してください。
< /dev/urandom perl -CO -ne '
BEGIN{$/=\3}
no warnings "utf8";
$c = unpack("L>","\0$_") * 0x10f800 >> 24;
$c += 0x800 if $c >= 0xd800;
$c = chr $c;
print $c if $c =~ /\P{unassigned}/'
あなたは以下を好むかもしれません:
if $c =~ /[\p{Space}\p{Graph}]/ && $c !~ /\p{Co}/
グラフィックと間隔のみを取得します(個人使用セクションのコンテンツを除く)。
1GiBを取得するにはhead -c1G
(GNU仮定head
)にパイプすることができますが、最後の文字が途中で切り捨てられることに注意してください。