한국어

Develop

Javascript 한글을 mos 부호로 Convert

2009.08.27 00:00

kaiserhan 조회 수:47662

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> new document </title>
<script LANGUAGE="JavaScript">
<!--
var moskey=new Array();
moskey[0]=new Array("A","ㅗ","._","A","Alfa");
moskey[1]=new Array("B","ㄷ","_...","B","Bravo");
moskey[2]=new Array("C","ㅊ","_._.","C","Charlie");
moskey[3]=new Array("D","ㅡ","_..","D","Delta");
moskey[4]=new Array("E","ㅏ",".","E","Echo");
moskey[5]=new Array("F","ㄴ",".._.","F","Foxtrot");
moskey[6]=new Array("G","ㅅ","__.","G","Golf");
moskey[7]=new Array("H","ㅜ","....","H","Hotel");
moskey[8]=new Array("I","ㅑ","..","I","India");
moskey[9]=new Array("J","ㅎ",".___","J","Juliet" );
moskey[10]=new Array("K","ㅇ","_._","K","Kilo");
moskey[11]=new Array("L","ㄱ","._..","L","Lima");
moskey[12]=new Array("M","ㅁ","__","M","Mike");
moskey[13]=new Array("N","ㅛ","_.","N","November");
moskey[14]=new Array("O","ㅍ","___","O","Oscar");
moskey[15]=new Array("P","ㅈ",".__.","P","Papa");
moskey[16]=new Array("Q","ㅐ","__._","Q","Quebec");
moskey[17]=new Array("R","ㅠ","._.","R","Romeo");
moskey[18]=new Array("S","ㅕ","...","S","Sierra");
moskey[19]=new Array("T","ㅓ","_","T","Tango");
moskey[20]=new Array("U","ㅣ",".._","U","Uniform");
moskey[21]=new Array("V","ㄹ","..._","V","Victor");
moskey[22]=new Array("W","ㅂ",".__","W","Whisky");
moskey[23]=new Array("X","ㅋ","_.._","X","X-ray");
moskey[24]=new Array("Y","ㅔ","_.__","Y","Yankee");
moskey[25]=new Array("Z","ㅌ","__..","Z","Zulu");
moskey[26]=new Array("1","",".____","1","._");
moskey[27]=new Array("2","","..___","2",".._");
moskey[28]=new Array("3","","...__","3","..._");
moskey[29]=new Array("4","","...._","4","...._");
moskey[30]=new Array("5","",".....","5",".....");
moskey[31]=new Array("6","","_....","6","_....");
moskey[32]=new Array("7","","__...","7","_...");
moskey[33]=new Array("8","","___..","8","_..");
moskey[34]=new Array("9","","____.","9","_.");
moskey[35]=new Array("0","","_____","0","_");
moskey[36]=new Array(".","","._._._",".","Full-stop(period)");
moskey[37]=new Array(",","","__..__",",","Comma");
moskey[38]=new Array("?","","..__..","?","Question mark (query)");
moskey[39]=new Array("/","","_.._.","/","Fraction bar");
moskey[40]=new Array(":","","___...",":","Colon");
moskey[41]=new Array("'","",".____.","'","Apostrophe");
moskey[42]=new Array("+","","._._.","+","Plus");
moskey[43]=new Array("-","","_...._","-","Hyphen");
moskey[44]=new Array("=","","_..._","=","Equal");
moskey[45]=new Array("(","","_.__.","(","Brackets (parentheses)");
moskey[46]=new Array(")","","_.__._",")","");
moskey[47]=new Array("정정","영문(HH)","........","국문(SN)","..._. ");
//initial sound
var is=new Array("ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ");
//middle sound
var ms=new Array("ㅏ","ㅐ","ㅑ","ㅒ","ㅓ","ㅔ","ㅕ","ㅖ","ㅗ","ㅘ","ㅙ","ㅚ","ㅛ","ㅜ","ㅝ","ㅞ","ㅟ","ㅠ","ㅡ","ㅢ","ㅣ");
//final sounct
var fs=new Array("","ㄱ","ㄲ","ㄳ","ㄴ","ㄵ","ㄶ","ㄷ","ㄹ","ㄺ","ㄻ","ㄼ","ㄽ","ㄾ","ㄿ","ㅀ","ㅁ","ㅂ","ㅄ","ㅅ","ㅆ","ㅇ","ㅈ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ");
/*
Hangul Jamo 1100(4352)-11FF(4607)
Hangul Compatibility Jamo 3130(12592)-318F(12687)
Hangul Syllables AC00(43032)-D7AF(55215)
*/
function HToAsc(){
var objD=document.getElementById("txt_debug");
var strV=document.getElementById("txt_str").value;
var objR=document.getElementById("txt_ret");
var objM=document.getElementById("txt_mos");
objD.innerHTML="";
objR.value="";
objM.value="";
var nasc,ii,mi,fi;
var ct="E";
for (i=0;i<strV.length;i++)
{
nasc=strV.charCodeAt(i);

if (nasc<256)
ct="E";
else if((nasc>=4352 && nasc<=4607)||(nasc>=12592 && nasc<=12687))
ct="HJ";
else if(nasc>=43032 && nasc<=55215)
ct="HS";

objR.value+=' '+nasc;
if (ct=="HS")
{
ii=(nasc-44032)/(21*28)
ii=Math.floor(ii)
mi=((nasc-44032)%(21*28))/28
mi=Math.floor(mi)
fi=((nasc-44032)%(21*28))%28
fi=Math.floor(fi)

objD.innerHTML+='<br  />'+ii;
objD.innerHTML+='-'+mi;
objD.innerHTML+='-'+fi;
objD.innerHTML+='-'+is[ii];
objD.innerHTML+='-'+ms[mi];
objD.innerHTML+='-'+fs[fi];
CharToMos(is[ii],"kor");
CharToMos(ms[mi],"kor");
if (fs[fi]!="")
CharToMos(fs[fi],"kor");
}
else if (ct=="HJ")
{
CharToMos(String.fromCharCode(nasc),"eng");
}
else if (ct=="E")
{
CharToMos(String.fromCharCode(nasc),"eng");
}
}
objR.value+=' ';
}
function AscToH(){
var objD=document.getElementById("txt_debug");
var strV=document.getElementById("txt_ret").value;
var objR=document.getElementById("txt_str");
objR.value="";
objD.innerHTML="";
var nasc,ii,mi,fi;
var cur=0,curv;
for (i=0;i<strV.length;i++)
{
curv = strV.substr(cur+1, (strV.indexOf(" ",cur+1)-cur-1))
cur = strV.indexOf(" ",cur+1);
if (cur<=0)
{
cur=strV.length-1
}
objR.value+=""+String.fromCharCode(curv);

nasc=curv;

if (nasc<256)
ct="E";
else if((nasc>=4352 && nasc<=4607)||(nasc>=12592 && nasc<=12687))
ct="HJ";
else if(nasc>=43032 && nasc<=55215)
ct="HS";

if (ct=="HS")
{
ii=(nasc-44032)/(21*28)
ii=Math.floor(ii)
mi=((nasc-44032)%(21*28))/28
mi=Math.floor(mi)
fi=((nasc-44032)%(21*28))%28
fi=Math.floor(fi)

objD.innerHTML+='<br  />'+ii;
objD.innerHTML+='-'+mi;
objD.innerHTML+='-'+fi;
objD.innerHTML+='-'+is[ii];
objD.innerHTML+='-'+ms[mi];
objD.innerHTML+='-'+fs[fi];
}
}
}
function CharToMos(pchr,lang){
var objM=document.getElementById("txt_mos");
for (j=0;j<moskey.length;j++)
{
if (lang=="eng")
{
if (moskey[j][0]==pchr.toUpperCase())
{
objM.value+=' '+moskey[j][2];
}
}
else if(lang=="kor"){
if (moskey[j][1]==pchr.toUpperCase())
{
objM.value+=' '+moskey[j][2];
}
}
}
objM.value+=' ';
}
function MosToChar(pmos,lang){
var objM=document.getElementById("txt_mret");
for (j=0;j<moskey.length;j++)
{
if (lang=="eng")
{
if (moskey[j][2]==pmos)
{
objM.value+=' '+moskey[j][0];
}
}
else if(lang=="kor"){
if (moskey[j][2]==pmos)
{
objM.value+=' '+moskey[j][1];
}
}
}
objM.value+=' ';
}
//-->
</script>
</head>
<body>
<form id="frm" method="post">
<br  /><input id="txt_str" type="text" size="50" /><input type="button" value="Parse" onclick="HToAsc();" />
<br  /><input id="txt_ret" type="text" size="50" /><input type="button" value="ReParse" onclick="AscToH();" />
<br  /><input id="txt_mos" type="text" size="50" />
<br  /><input id="txt_mret" type="text" size="50" />
<br  /><div id="txt_debug" style="border:solid 1px;width:400px;height:300px;overflow:scroll;"></div>
</form>
</body>
</html>