将ubyte []转换为D中的字符串

def*_*lt0 5 encoding d

我从不受信任的源接收ubyte []并需要将其转换为utf-8编码的字符串.如何转换它并检查我给出的字节是否是有效的utf-8数据?在phobos中似乎没有直接执行此操作的函数(即获取ubyte []或ubyte范围并将其转换为字符串或字符范围).

sig*_*god 5

std.utf.validate

\n\n

还有这样的事情吗?

\n\n\n\n
import std.stdio;\nimport std.utf;\n\nvoid main()\n{\n    ubyte[] bytes = cast(ubyte[])"\xd1\x81\xd0\xbe\xd0\xb1\xd0\xb0\xd0\xba\xd0\xb0";\n    writeln("bytes: ", bytes);\n\n    string str = cast(string)bytes;\n    writeln("string: ", str);\n\n    validate(str);\n\n    writeln("valid");\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

应用程序输出:

\n\n
bytes: [209, 129, 208, 190, 208, 177, 208, 176, 208, 186, 208, 176]\nstring: \xd1\x81\xd0\xbe\xd0\xb1\xd0\xb0\xd0\xba\xd0\xb0\nvalid\n
Run Code Online (Sandbox Code Playgroud)\n