2017-01-28 14 views
0

私は現在Visual Studio Communityを使用しており、Javascript/html5を学習しています。私はjavascriptを使用して変数にASCIIコードを格納しようとしているところに遭遇しましたが、表示しようとすると意図した文字の代わりに実際のコードが表示されます。私はボタン、 "&#1 24171" をクリックするとASCIIコードを変数に格納してから表示する

<script type="text/javascript"> 

    x = "&#24171"; 

    function ranAlert(){ 
     alert(x); 
    } 
</script> 

<form> 
    <input type="button" value="me" onclick="ranAlert()" /> 

</form> 

ここで出力が表示されます。しかし、実際の意図された文字 "幫"を表示するにはどうすればいいですか?

+1

漢字はASCIIの一部ではありません...多分あなたはUnicodeを意味しましたか? – Li357

+0

@AndrewLi HTMLパーザで解析されない文字列にHTMLエンティティ表記を使用しても、何の役にも立たないでしょう。しかし、HTMLマークアップの一部であった場合、(セミコロンでメモしたように)うまくいきます。 – Pointy

+0

@Pointyはい、私はそれに気付きました。あなたは正しいです。 – Li357

答えて

4

あなたのキャラクターにとって、あなたはHTMLマークアップに文字列を使用していないので、HTMLではなくJavaScript表記を使用する必要があります。

alert("\u5e6b"); 

JavaScriptの表記が進を使用していますので、あなたは、16進表記に24171を翻訳する必要があると思います:あなただけalert()にそれを渡しています。ブラウザコンソールでこれを行うことができます:

(24171).toString(16) 

5e6bです。この文字はUTF-16で表現することができるので

、問題に対処するための簡単な方法は、単に文字列で直接文字を使用することです:いくつかのUnicodeコードポイントの場合

alert("幫"); 

、JavaScriptで表現が必要ですJavaScript文字列はUTF-16エンコーディングを使用し、一部の文字は16ビット以上を表現する必要があるため、ペアののJavaScript文字が含まれています。非常に有益なウェブサイトFileFormat.orgには、JavaScriptを含むいくつかの一般的な言語のすべての文字のすぐに使える表現を含む、Unicode用のリソースがあります。

CSSでそのコードポイントを使用する場合、たとえばcontent:プロパティの値として使用する場合は、少し異なる方法でエスケープします。 CSS符号化方式は、6桁の16進数の値ができます:

.my-glyph { content: "\005E6B"; } 

は最後にUnicodeは多くの書記体系は、いくつかの部分から構成さグリフを含んでいるという事実を反映しているため、「文字」という用語を使用すると、完全に正確ではないことに注意してください。私は一般的に用語に厳しくはないので、私の例に従わないでください。単一のグリフ(アルファベットユーザーが "文字"と呼ぶもの)のように見えるものは、実際にはいくつかの別々のコードポイントで構成されている可能性があることに留意することが重要です。

関連する問題