4

我正在解析一个 xml 文件,该文件存储我需要在画布上显示的图像/标题数据。但是有时文件中有一个实体,当将文本绘制到画布上时,它会将其解释为平面文本。我怎样才能©在画布上显示为©?这甚至可能吗,或者有人知道一个好的解决方法吗?

4

3 回答 3

5

您可以将 HTML 实体替换为等效的 Unicode 字符。

例如

var x = 'This is © 2010';
x = x.replace( /©/, '\u00A9' ); // x is now 'This is © 2010'
于 2010-06-10T16:31:51.757 回答
1

另请注意,所有 HTML 实体都将具有十六进制值

例如 ℃ Hex 值为 "2103" 我们可以将其转换为 "\u2103" 并将其添加到画布代码中

    <canvas id='my-canvas'></canvas>
    <script>
    var c = document.getElementById("my-canvas");  
    var ctx = c.getContext("2d");
    ctx.strokeText("170 \u2103", 25, 50);
    ctx.stroke();
    </script>
于 2018-04-26T13:42:08.627 回答
0

迟到了,但对于其他寻找解决方案的人来说:

var inputText = 'This is &copy; 2010';

var textContainer = document.createElement('span'); // Use a span to render the html entities
textContainer.innerHTML = inputText; // Set as innerhtml to make sure entities are converted

var outputText = textContainer.textContent; // x is now 'This is © 2010'

输入文本就像 html 元素中的普通文本一样呈现。这会自动转换所有 html 实体。

于 2019-11-22T09:02:00.300 回答