似乎Dart没有提供默认机制(或者至少我找不到它)来解码HTML转义实体。
我想做的就是转换,例如。 mysql> describe SELECT * FROM TableOne WHERE current IS NOT NULL;
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | TableOne | ALL | theCurrent | NULL | NULL | NULL | 9238 | Using where |
+----+-------------+----------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)
mysql> describe SELECT * FROM TableOne WHERE current = 0;
+----+-------------+----------+------+---------------+------------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+---------------+------------+---------+-------+------+-------------+
| 1 | SIMPLE | TableOne | ref | theCurrent | theCurrent | 5 | const | 1 | Using where |
+----+-------------+----------+------+---------------+------------+---------+-------+------+-------------+
1 row in set (0.00 sec)
到Q&A
。 (这只是一个例子)
自版本1.11.1起,Dart转换对这些like so进行编码。
从那里创建自定义转换器实现相当简单,但不会涵盖所有用例。例如:如果Q&A
用十六进制值<
?
任何人都有一些漂亮的解决方案吗?
答案 0 :(得分:5)
我刚刚为了这个目的制作了一个小而完整的Dart库:html_unescape。
它支持:
)
á
)ã
)import 'package:html_unescape/html_unescape.dart';
main() {
var unescape = new HtmlUnescape();
var text = unescape.convert("<strong>This "escaped" string");
print(text);
}
您还可以使用转换器转换流。例如,代码
下面会将POSIX stdin
转换为HTML-unncoded stdout
。
await stdin
.transform(new Utf8Decoder())
.transform(new HtmlUnescape())
.transform(new Utf8Encoder())
.pipe(stdout);
答案 1 :(得分:2)
我认为Dart / Flutter可以为您自己做到:
import 'dart:html' as html;
// In production use library — universal_html: ^1.1.18
// and — import 'package:universal_html/html.dart' as html;
void main() {
String badString =
'This " string " will be<strong> printed normally. < ' > </strong> >';
print(_parseHtmlString(badString));
}
String _parseHtmlString(String htmlString) {
var text = html.Element.span()..appendHtml(htmlString);
return text.innerText;
}
//打印:此“字符串”将正常打印。 <'>>
答案 2 :(得分:0)
1- 向 pubspec.yaml 添加依赖包:
dependencies:
.....
html_unescape: ^1.0.2
2- 在终端中运行:
flutter pub get
示例如何使用:
import 'package:html_unescape/html_unescape.dart';
Text(HtmlUnescape().convert(title));
如果您要多次使用,请按照以下步骤操作:
var unescape = HtmlUnescape();
var text = unescape.convert("<strong>This "escaped" string");
print(text);
<块引用>
这个“转义”的字符串