ポイント134069
によって与えられたUnicode文字、HTMLは
𠮵
javascriptのHTMLエスケープ文字エンティティへのネイティブな方法はありますか?
を逃れたがJavaScriptから文字エンティティのためのHTMLエスケープを取得する(好ましくは天然)方法はありますか?あなたはこのような文字の両方のポイントと進値を得ることができます
ポイント134069
によって与えられたUnicode文字、HTMLは
𠮵
javascriptのHTMLエスケープ文字エンティティへのネイティブな方法はありますか?
を逃れたがJavaScriptから文字エンティティのためのHTMLエスケープを取得する(好ましくは天然)方法はありますか?あなたはこのような文字の両方のポイントと進値を得ることができます
:
$('#doIt').click(function() {
$('#outputHex').html($('#inputText').val().codePointAt(0).toString(16));
$('#outputString').html('&#x' + $('#inputText').val().codePointAt(0).toString(16) + ';');
$('#outputChar').html('&#x' + $('#inputText').val().codePointAt(0).toString(16) + ';');
});
code {
display: block;
padding: 4px;
background-color: #EFEFEF;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="inputText"></textarea>
<button id="doIt">do it</button>
<h3>result</h3>
<code id="outputHex"></code>
<code id="outputString"></code>
<code id="outputChar"></code>
つ以上:ここ
var codePoint = ''.codePointAt(0); //codePoint = 134069
var hexValue = ''.codePointAt(0).toString(16); //hexValue = 20bb5
var htmlEscape = '&#x' + hexValue + ';'; //htmlEscape = 𠮵
は実施例でありますcodePointAtはES6関数であり、古いブラウザではサポートされていません。場合は、ブラウザのブロック、ここで実行しているからコード:ここでJSFiddle Example
は、すべての非ASCII7文字を変換する関数である、と<
、>
、HTMLエンティティに&
:
function htmlEntities(s) {
return Array.from(s).map(function (c) {
return c.codePointAt(0) < 128 && '<&>'.indexOf(c) == -1
? c
: '&#x' + c.codePointAt(0).toString(16) + ';';
}).join('');
}
var s = 'This is \u{20BB5}, a special character & encoded in HTML.';
document.body.innerHTML = htmlEntities(s);
Javascript文字列では、拡張Unicode文字は2文字(たとえば、length
)としてカウントされることに注意してください。 Array.from
,[...s]
のようなES6の構造は正しいチャンクを得ることを確認します。
これは良いアイデアですが、すべてのHTMLエンティティで動作するとは思わない(つまり、 '&'はより複雑です)。 – Startec
いいえ、これはどんな文字でも動作します。 &のような特殊文字があります。ショートカットは&ですが、これも機能します。私はJFiddleの例で私の答えを更新します。 – Gremash