取得した文字列が英語か日本語か判定する必要があったので調べたメモ。
使用例
var text = "abc. #}";
for(var i = 0; i < text.length; i++) {
console.log(text.charCodeAt(i));
}
[/code]
コンソールの出力結果
<div class="box_w">
97
98
99
46
32
35
125
</div>
何らかのテキスト(以下の例では「title」)を取得して、それが英語かどうかを判定する例。
charCodeAt(i) の戻り値が 256 以上の場合「英語ではない」と判定している。
この例では「英語」か「日本語」かを判定したいので「日本語=英語以外」として判定。
var isJapanese = false; //日本語(英語以外)の場合「true」に設定
for(var i=0; i < title.length; i++){
if(title.charCodeAt(i) >= 256) {
isJapanese = true;
break;
}
}
//表示する文字数の調整
if(isJapanese) { //日本語(英語以外)の場合
if(title.length > 20) {
title = title.substr(0,10) + '~';
}
} else { //英語の場合
if(title.length > 32) {
title = title.substr(0,28) + '...';
}
}
......
逆に Unicode エンコーディングから文字列を作成するには、String.fromCharCode()を使う。
var test = String.fromCharCode(128, 129, 130, 131, 132, 159, 160, 161, 162, 163, 164, 165, 167, 168, 253, 254, 255, 256, 257) console.log(test);
コンソールの出力結果
128から159までは何も出力されず、160(おそらく何らかのスペース)以降の文字が出力されている。
160:
161:¡
162:¢
163:£
164:¤
165:¥
167:§
168:¨
253:ý
254:þ
255:ÿ
256:Ā
257:ā