jan*_*nce 31 html javascript unicode jquery
我想在HTML链接文本中显示"Open Lock"字符.
如果我直接执行它会正确显示<a id="myId">🔒</a>,但我发现没有办法用jQuery .text()函数改变它,就像在:
$("#myID").text(openLockText);
Run Code Online (Sandbox Code Playgroud)
我应该在openLockText中添加什么?
Aln*_*tak 38
Javascript内部仅支持UTF-16.
因为这是一个扩展的32位UTF字符(不在"基本多语言平面"中),所以需要插入"UTF-16代理对",这在您链接到的同一页面上有用:
0xD83D 0xDD13
Run Code Online (Sandbox Code Playgroud)
即
$('#myId').text('\ud83d\udd13');
Run Code Online (Sandbox Code Playgroud)
更多细节可以在RFC 4627中找到,严格来说是JSON的格式.
编辑 - 如果它是一个可以用单个UTF-16字符表示的Unicode代码点,那么在这种情况下你可以使用JavaScript转义序列:
$('#foo').text('\uXXXX');
Run Code Online (Sandbox Code Playgroud)
但是,因为您的角色需要更多位,所以这不起作用.可能有可能构造允许字符表示为UTF-16的字节序列,但这很痛苦.我会去的.html().
请注意,并非所有字体都提供像这样的"异国情调"代码点的字形,而且根据我的经验,那些字体提供了令人难以置信的难看的代码点.
您可以将字符直接放在那里,作为带引号的字符串,例如
$("#myID").text('');
Run Code Online (Sandbox Code Playgroud)
只要该文件是UTF-8编码并且您正确声明了字符编码.(理论上,您也可以使用UTF-16甚至UTF-32,但不应期望浏览器支持它们.)
虽然根据ECMAScript标准,直接在源文档中支持非BMP字符是可选的,但现代浏览器允许您使用它们.当然,你需要一个可以处理UTF-8的编辑器,你需要一些输入法; 请参阅我的完整Unicode输入实用程序.
这个问题包含一些未经注意的错误:由于id属性值区分大小写,因此拼写myId需要修复myID.OPEN LOCK字符是U + 1F513,而不是U + 1F512,因此引用🔒会产生错误的字符.
此外,很少有字体包含OPEN LOCK,并且即使系统中的某些字体包含字形,浏览器(尤其是IE)也可能难以找到字形,因此您应该向浏览器提供帮助并声明已知包含该字符的字体列表,按优先顺序排列.例:
<style>
#myID { font-family: Symbola, Quivira, Segoe UI Symbol; }
</style>
<a id="myID">stuff</a>
<script>
$("#myID").text('');
</script>
Run Code Online (Sandbox Code Playgroud)
非BMP字符在内部表示为代理对,并且可以使用\u该对的组件的符号来编写,但这非常不直观
| 归档时间: |
|
| 查看次数: |
26790 次 |
| 最近记录: |