我是 HTML 编码的新手,我知道 HTML 有一些保留字符供其使用,它还通过字符代码显示一些字符。例如 -:
Œ is Œ
© is ©
® is ®
我在 std::string 中有 HTML 源代码。我如何将它们破译成它们的实际形式并从 std::string 中替换?是否有任何可用源的库或可以使用宏预处理器来完成?
我是 HTML 编码的新手,我知道 HTML 有一些保留字符供其使用,它还通过字符代码显示一些字符。例如 -:
Œ is Œ
© is ©
® is ®
我在 std::string 中有 HTML 源代码。我如何将它们破译成它们的实际形式并从 std::string 中替换?是否有任何可用源的库或可以使用宏预处理器来完成?
我建议使用一些可以自动为您进行转换的 HTML/XML 解析器。手动正确解析 HTML 非常困难。如果你坚持自己做,Boost String Algorithms 库提供了有用的替换函数。
Œ is Œ
不,不是。Œ
是“部分线向后”。Œ 的正确数字实体是Œ
和Œ
。
数字实体的一种方法是使用正则表达式,例如&#([0-9]+);
,获取数值并将其转换为 ASCII 字符(可能sprintf
在 C++ 中使用)。
对于命名实体,您需要构建一个映射。您可能可以做一个简单的字符串替换来转换为数字,然后使用上面的方法。W3C 在这里有一个表:http: //www.w3.org/TR/WD-html40-970708/sgml/entities.html
但是,如果您尝试读取或解析字符串中的一堆 HTML,则应该使用 HTML 解析器。搜索关于 SO 的许多问题。