我有以下簡單的程序,從3個Unicode字符集的聯合中生成隨機Unicode字符串。D語言:如何將Unicode字符打印到控制檯?
#!/usr/bin/env rdmd
import std.uni;
import std.random : randomSample;
import std.stdio;
import std.conv;
/**
* Random salt generator
*/
dstring get_salt(uint s)
{
auto unicodechars = unicode("Cyrillic") | unicode("Armenian") | unicode("Telugu");
dstring unichars = to!dstring(unicodechars);
return to!dstring(randomSample(unichars, s));
}
void main()
{
writeln("Random salt:");
writeln(get_salt(32));
}
然而,writeln的輸出是:
$ ./teste.d
Random salt:
rw13 13437 78580112 104 3914645
這些是什麼號碼? Unicode代碼點?我如何打印實際的字符?我在Ubuntu Linux與區域設置爲UTF-8
'unicodechars'在很多方面都是錯誤的。你是按比例的那些東西,併爲什麼編譯。你可能想使用'〜'連接或者其他的東西。 –
謹慎舉個例子嗎?順便說一句,這些按比例來自Dlang的onicode教程... – fccoelho
我不知道這件事應該如何工作。我以前從來沒有使用過這部分庫,文檔也沒有解釋清楚......你讀的鏈接是什麼?但是你現在正在隨機化的字符串只是一個結構成員打印,而不是一個字符列表。 –