2015-12-21 2 views
4

Я получаю ubyte [] из ненадежного источника и должен преобразовать его в кодировку utf-8. Как я могу преобразовать его и проверить, что байты, которые я дал, являются действительными данными utf-8? В phobos не существует функции, которая делает это напрямую (т. Е. Принимает ubyte [] или диапазон ubyte и преобразует его в строку или диапазон символов).Convert ubyte [] to string in D

ответ

1

std.utf.validate?

И что-то вроде этого?

import std.stdio; 
import std.utf; 

void main() 
{ 
    ubyte[] bytes = cast(ubyte[])"собака"; 
    writeln("bytes: ", bytes); 

    string str = cast(string)bytes; 
    writeln("string: ", str); 

    validate(str); 

    writeln("valid"); 
} 

Выход Применение:

bytes: [209, 129, 208, 190, 208, 177, 208, 176, 208, 186, 208, 176] 
string: собака 
valid