1

我是 HTML 编码的新手,我知道 HTML 有一些保留字符供其使用,它还通过字符代码显示一些字符。例如 -:

Œ  is   Œ
©  is   ©
®  is    ®

我在 std::string 中有 HTML 源代码。我如何将它们破译成它们的实际形式并从 std::string 中替换?是否有任何可用源的库或可以使用宏预处理器来完成?

4

3 回答 3

2

我建议使用一些可以自动为您进行转换的 HTML/XML 解析器。手动正确解析 HTML 非常困难。如果你坚持自己做,Boost String Algorithms 库提供了有用的替换函数。

于 2010-03-10T17:37:13.320 回答
1
Œ  is   Œ

不,不是。Œ是“部分线向后”。Œ 的正确数字实体是ŒŒ

于 2010-03-10T18:34:53.430 回答
0

数字实体的一种方法是使用正则表达式,例如&#([0-9]+);,获取数值并将其转换为 ASCII 字符(可能sprintf在 C++ 中使用)。

对于命名实体,您需要构建一个映射。您可能可以做一个简单的字符串替换来转换为数字,然后使用上面的方法。W3C 在这里有一个表:http: //www.w3.org/TR/WD-html40-970708/sgml/entities.html

但是,如果您尝试读取或解析字符串中的一堆 HTML,则应该使用 HTML 解析器。搜索关于 SO 的许多问题。

于 2010-03-10T17:58:37.793 回答