我试图找出将文本(8位ubyte[]
或string
)编码为HTML对应文字的最佳方式。将文本转换为HTML在D
我的建议到目前为止是使用查找表的8位字符
string[256] lutLatin1ToHTML;
lutLatin1ToXML[0x22] = """;
lutLatin1ToXML[0x26] = "&";
...
在HTML中显示有使用功能
pure string toHTML(in string src,
ref in string[256] lut) {
return src.map!(a => (lut[a] ? lut[a] : new string(a))).reduce!((a, b) => a ~ b) ;
}
特殊意义映射
除了我几乎工作我不知道如何从'ubyte创建一个字符串? (不翻译的情况)。
我试图
writeln(new string('a'));
但它打印垃圾,我不知道为什么。
有关HTML编码的更多详细信息,请参阅https://en.wikipedia.org/wiki/Character_entity_reference
我应该补充说“”〜128将不起作用 - 这可能最终会抱怨无效的utf-8序列。它不会在前面,所以你可以一次构建一个字节的字符串。只要确保你添加了值b <128 - ascii - 或者注意以正确的utf8格式编码其他值。但是,如果你将所有的HTML编码在一起,那么无论如何你都会好起来的,因为这就是所有的ascii。 –