Javascript 理解带有unicode字符的文本时出现问题
我想使用canvasJavascript 理解带有unicode字符的文本时出现问题,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,我想使用canvasfillText在字体中显示特殊字符。守则基本上是: canvas = document.getElementById("mycanvas"); context = canvas.getContext("2d"); hexstring = "\u00A9"; //hexstring = "\\u" +"00A9"; context.fillText(hexstring,100,100); 如果我使用第一个hexstring,它可以工作,我得到版权符号。如果使用第二个,它
fillText
在字体中显示特殊字符。守则基本上是:
canvas = document.getElementById("mycanvas");
context = canvas.getContext("2d");
hexstring = "\u00A9";
//hexstring = "\\u" +"00A9";
context.fillText(hexstring,100,100);
如果我使用第一个
hexstring
,它可以工作,我得到版权符号。如果使用第二个,它只显示\u00A9
。因为我需要遍历这些数字,所以我需要使用第二个数字来显示字体的所有特殊字符。我正在使用utf-8。我做错了什么?工作示例
评估时间:)
迭代num,这将很好地工作
var num = value;
var uni = '"\\u' + num+'"';
var result;
if (/^[A-F\d]{4}$/.test(num))
{
result = eval(uni);
}
使用
String.fromCharCode
将数字转换为字符
var c= 169; // 0xA9
context.fillText(String.fromCharCode(c), 100, 100);
如果您有一个十六进制编码的字符串,您可以首先将其解析为十六进制数:
var h= '00A9';
String.fromCharCode(parseInt(h, 16));
要创建包含一系列字符的字符串,可以创建一个数字数组,然后使用apply
将它们作为参数传递给fromCharCode
。这比分别为每个字符执行string=string+string.fromCharCode(c)
要快
function makeRange(n0, n1) {
var a= [];
for (; n0<n1; n++)
a.push(n0);
}
var someChars= makeRange(0xA9, 0xFF);
var stringOfChars= String.fromCharCode.apply(String, someChars);
函数makeRange(n0,n1){
var a=[];
因为(;n0Undone down vote,因为正则表达式检查消除了即时漏洞,但是eval
仍然是缓慢、丑陋、危险的,最好避免。我已经用了一天所有的向上投票;我会尽量记住在四小时后回来。当然,StackOverflow再次拯救了我。谢谢bobince!