살인!
javascript/jquery
javascript/jquery - 자바스크립트 javascript 한/영타 변환기, 한영, 한글, 영어
이 름 : 바다아이
|
조회수 : 12934
짧은 주소 : https://www.bada-ie.com/su/?201591783854
YT Lab <030> - 한/영타 변환기
생각하고 쓴 날짜 : 2004/01/21
상태 : 완성, 유효
제목이 나타내듯 바로 '한/영타 변환기' 입니다.
가끔씩 볼 수 있는 'dodls rngka;' 같은 한글을 영어로 친 것이나, '소둇.ㅜㄷㅅ' 같은 영어를 한글로 친 것을 쉽게 원래의 글로 바꿔 줍니다.
또한 그 반대 방향으로의 변환도 가능합니다.
이 변환기는 한국어 두벌식 자판 ↔ 영문 Qwerty 자판 사이의 변환을 수행합니다.
사용 : 한글로 친 것을 영어로 바꿀 것인지, 영어로 친 것을 한글로 바꿀 것인지 선택합니다. 글을 입력하면 바로 변환됩니다.
(12/09/19) 여러 브라우저에서 사용할 수 있도록 JavaScript로 변환하였습니다.
소스코드
<meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" />
<div id ="wikipage" class ="trac-content" > <h1 id ="YTLab030-한영타변환기" > YT Lab <030> - 한/영타 변환기</h1 >
<p >
생각하고 쓴 날짜 : 2004/01/21<br />
상태 : 완성, 유효
</p >
<hr />
<p >
제목이 나타내듯 바로 '한/영타 변환기' 입니다.<br />
가끔씩 볼 수 있는 'dodls rngka;' 같은 한글을 영어로 친 것이나, '소둇.ㅜㄷㅅ' 같은 영어를 한글로 친 것을 쉽게 원래의 글로 바꿔 줍니다.<br />
또한 그 반대 방향으로의 변환도 가능합니다.
</p >
<p >
이 변환기는 한국어 두벌식 자판 ↔ 영문 Qwerty 자판 사이의 변환을 수행합니다.
</p >
<p >
사용 : 한글로 친 것을 영어로 바꿀 것인지, 영어로 친 것을 한글로 바꿀 것인지 선택합니다. 글을 입력하면 바로 변환됩니다.
</p >
<ul > <li > (12/09/19) 여러 브라우저에서 사용할 수 있도록 JavaScript로 변환하였습니다.
</li > </ul > <style >
#convform th { white-space : nowrap; }
#convform td { padding-right : 0.8em ; }
#convform textarea { width : 100% ; }
#convform span { padding : 1em ; }
</style >
<table id ="convform" class ="wiki" > <tr > <th style ="text-align: right" > 문장 입력:</th >
<td > <textarea id ="txtSource" rows ="4" cols ="60" onKeyUp ="doConvert();" > </textarea >
</td > </tr >
<tr > <td colspan ="2" style ="text-align: center" > <input type ="radio" id ="optEtoH" name ="Mode" checked ="checked" onClick ="doConvert();" >
<label for ="optEtoH" > 영타 → 한글</label > <span > </span > <input type ="radio" id ="optHtoE" name ="Mode" >
<label for ="optHtoE" onClick ="doConvert();" > 한타 → 영문</label >
</td > </tr > <tr > <th style ="text-align: right" > 변환 결과:</th > <td > <textarea id ="txtConv" rows ="4" cols ="60" readonly ="readonly" > </textarea >
</td > </tr > </table > <script language ="JavaScript" >
<!--
var ENG_KEY = "rRseEfaqQtTdwWczxvgkoiOjpuPhynbml" ;
var KOR_KEY = "ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅛㅜㅠㅡㅣ" ;
var CHO_DATA = "ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ" ;
var JUNG_DATA = "ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ" ;
var JONG_DATA = "ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ" ;
function doConvert () {
if (optEtoH.checked)
txtConv.value = engTypeToKor(txtSource.value);
else
txtConv.value = korTypeToEng(txtSource.value);
}
function engTypeToKor (src ) {
var res = "" ;
if (src.length == 0 )
return res;
var nCho = -1 , nJung = -1 , nJong = -1 ;
for (var i = 0 ; i < src.length; i++) {
var ch = src.charAt(i);
var p = ENG_KEY.indexOf(ch);
if (p == -1 ) {
if (nCho != -1 ) {
if (nJung != -1 )
res += makeHangul(nCho, nJung, nJong);
else
res += CHO_DATA.charAt(nCho);
} else {
if (nJung != -1 )
res += JUNG_DATA.charAt(nJung);
else if (nJong != -1 )
res += JONG_DATA.charAt(nJong);
}
nCho = -1 ;
nJung = -1 ;
nJong = -1 ;
res += ch;
} else if (p < 19 ) {
if (nJung != -1 ) {
if (nCho == -1 ) {
res += JUNG_DATA.charAt(nJung);
nJung = -1 ;
nCho = CHO_DATA.indexOf(KOR_KEY.charAt(p));
} else {
if (nJong == -1 ) {
nJong = JONG_DATA.indexOf(KOR_KEY.charAt(p));
if (nJong == -1 ) {
res += makeHangul(nCho, nJung, nJong);
nCho = CHO_DATA.indexOf(KOR_KEY.charAt(p));
nJung = -1 ;
}
} else if (nJong == 0 && p == 9 ) {
nJong = 2 ;
} else if (nJong == 3 && p == 12 ) {
nJong = 4 ;
} else if (nJong == 3 && p == 18 ) {
nJong = 5 ;
} else if (nJong == 7 && p == 0 ) {
nJong = 8 ;
} else if (nJong == 7 && p == 6 ) {
nJong = 9 ;
} else if (nJong == 7 && p == 7 ) {
nJong = 10 ;
} else if (nJong == 7 && p == 9 ) {
nJong = 11 ;
} else if (nJong == 7 && p == 16 ) {
nJong = 12 ;
} else if (nJong == 7 && p == 17 ) {
nJong = 13 ;
} else if (nJong == 7 && p == 18 ) {
nJong = 14 ;
} else if (nJong == 16 && p == 9 ) {
nJong = 17 ;
} else {
res += makeHangul(nCho, nJung, nJong);
nCho = CHO_DATA.indexOf(KOR_KEY.charAt(p));
nJung = -1 ;
nJong = -1 ;
}
}
} else {
if (nCho == -1 ) {
if (nJong != -1 ) {
res += JONG_DATA.charAt(nJong);
nJong = -1 ;
}
nCho = CHO_DATA.indexOf(KOR_KEY.charAt(p));
} else if (nCho == 0 && p == 9 ) {
nCho = -1 ;
nJong = 2 ;
} else if (nCho == 2 && p == 12 ) {
nCho = -1 ;
nJong = 4 ;
} else if (nCho == 2 && p == 18 ) {
nCho = -1 ;
nJong = 5 ;
} else if (nCho == 5 && p == 0 ) {
nCho = -1 ;
nJong = 8 ;
} else if (nCho == 5 && p == 6 ) {
nCho = -1 ;
nJong = 9 ;
} else if (nCho == 5 && p == 7 ) {
nCho = -1 ;
nJong = 10 ;
} else if (nCho == 5 && p == 9 ) {
nCho = -1 ;
nJong = 11 ;
} else if (nCho == 5 && p == 16 ) {
nCho = -1 ;
nJong = 12 ;
} else if (nCho == 5 && p == 17 ) {
nCho = -1 ;
nJong = 13 ;
} else if (nCho == 5 && p == 18 ) {
nCho = -1 ;
nJong = 14 ;
} else if (nCho == 7 && p == 9 ) {
nCho = -1 ;
nJong = 17 ;
} else {
res += CHO_DATA.charAt(nCho);
nCho = CHO_DATA.indexOf(KOR_KEY.charAt(p));
}
}
} else {
if (nJong != -1 ) {
var newCho;
if (nJong == 2 ) {
nJong = 0 ;
newCho = 9 ;
} else if (nJong == 4 ) {
nJong = 3 ;
newCho = 12 ;
} else if (nJong == 5 ) {
nJong = 3 ;
newCho = 18 ;
} else if (nJong == 8 ) {
nJong = 7 ;
newCho = 0 ;
} else if (nJong == 9 ) {
nJong = 7 ;
newCho = 6 ;
} else if (nJong == 10 ) {
nJong = 7 ;
newCho = 7 ;
} else if (nJong == 11 ) {
nJong = 7 ;
newCho = 9 ;
} else if (nJong == 12 ) {
nJong = 7 ;
newCho = 16 ;
} else if (nJong == 13 ) {
nJong = 7 ;
newCho = 17 ;
} else if (nJong == 14 ) {
nJong = 7 ;
newCho = 18 ;
} else if (nJong == 17 ) {
nJong = 16 ;
newCho = 9 ;
} else {
newCho = CHO_DATA.indexOf(JONG_DATA.charAt(nJong));
nJong = -1 ;
}
if (nCho != -1 )
res += makeHangul(nCho, nJung, nJong);
else
res += JONG_DATA.charAt(nJong);
nCho = newCho;
nJung = -1 ;
nJong = -1 ;
}
if (nJung == -1 ) {
nJung = JUNG_DATA.indexOf(KOR_KEY.charAt(p));
} else if (nJung == 8 && p == 19 ) {
nJung = 9 ;
} else if (nJung == 8 && p == 20 ) {
nJung = 10 ;
} else if (nJung == 8 && p == 32 ) {
nJung = 11 ;
} else if (nJung == 13 && p == 23 ) {
nJung = 14 ;
} else if (nJung == 13 && p == 24 ) {
nJung = 15 ;
} else if (nJung == 13 && p == 32 ) {
nJung = 16 ;
} else if (nJung == 18 && p == 32 ) {
nJung = 19 ;
} else {
if (nCho != -1 ) {
res += makeHangul(nCho, nJung, nJong);
nCho = -1 ;
} else
res += JUNG_DATA.charAt(nJung);
nJung = -1 ;
res += KOR_KEY.charAt(p);
}
}
}
if (nCho != -1 ) {
if (nJung != -1 )
res += makeHangul(nCho, nJung, nJong);
else
res += CHO_DATA.charAt(nCho);
} else {
if (nJung != -1 )
res += JUNG_DATA.charAt(nJung);
else {
if (nJong != -1 )
res += JONG_DATA.charAt(nJong);
}
}
return res;
}
function makeHangul (nCho, nJung, nJong ) {
return String .fromCharCode(0xac00 + nCho * 21 * 28 + nJung * 28 + nJong + 1 );
}
function korTypeToEng (src ) {
var res = "" ;
if (src.length == 0 )
return res;
for (var i = 0 ; i < src.length; i++) {
var ch = src.charAt(i);
var nCode = ch.charCodeAt(0 );
var nCho = CHO_DATA.indexOf(ch), nJung = JUNG_DATA.indexOf(ch), nJong = JONG_DATA.indexOf(ch);
var arrKeyIndex = [-1 , -1 , -1 , -1 , -1 ];
if (0xac00 <= nCode && nCode <= 0xd7a3 ) {
nCode -= 0xac00 ;
arrKeyIndex[0 ] = Math .floor(nCode / (21 * 28 ));
arrKeyIndex[1 ] = Math .floor(nCode / 28 ) % 21 ;
arrKeyIndex[3 ] = nCode % 28 - 1 ;
} else if (nCho != -1 )
arrKeyIndex[0 ] = nCho;
else if (nJung != -1 )
arrKeyIndex[1 ] = nJung;
else if (nJong != -1 )
arrKeyIndex[3 ] = nJong;
else
res += ch;
if (arrKeyIndex[1 ] != -1 ) {
if (arrKeyIndex[1 ] == 9 ) {
arrKeyIndex[1 ] = 27 ;
arrKeyIndex[2 ] = 19 ;
} else if (arrKeyIndex[1 ] == 10 ) {
arrKeyIndex[1 ] = 27 ;
arrKeyIndex[2 ] = 20 ;
} else if (arrKeyIndex[1 ] == 11 ) {
arrKeyIndex[1 ] = 27 ;
arrKeyIndex[2 ] = 32 ;
} else if (arrKeyIndex[1 ] == 14 ) {
arrKeyIndex[1 ] = 29 ;
arrKeyIndex[2 ] = 23 ;
} else if (arrKeyIndex[1 ] == 15 ) {
arrKeyIndex[1 ] = 29 ;
arrKeyIndex[2 ] = 24 ;
} else if (arrKeyIndex[1 ] == 16 ) {
arrKeyIndex[1 ] = 29 ;
arrKeyIndex[2 ] = 32 ;
} else if (arrKeyIndex[1 ] == 19 ) {
arrKeyIndex[1 ] = 31 ;
arrKeyIndex[2 ] = 32 ;
} else {
arrKeyIndex[1 ] = KOR_KEY.indexOf(JUNG_DATA.charAt(arrKeyIndex[1 ]));
arrKeyIndex[2 ] = -1 ;
}
}
if (arrKeyIndex[3 ] != -1 ) {
if (arrKeyIndex[3 ] == 2 ) {
arrKeyIndex[3 ] = 0
arrKeyIndex[4 ] = 9 ;
} else if (arrKeyIndex[3 ] == 4 ) {
arrKeyIndex[3 ] = 2 ;
arrKeyIndex[4 ] = 12 ;
} else if (arrKeyIndex[3 ] == 5 ) {
arrKeyIndex[3 ] = 2 ;
arrKeyIndex[4 ] = 18 ;
} else if (arrKeyIndex[3 ] == 8 ) {
arrKeyIndex[3 ] = 5 ;
arrKeyIndex[4 ] = 0 ;
} else if (arrKeyIndex[3 ] == 9 ) {
arrKeyIndex[3 ] = 5 ;
arrKeyIndex[4 ] = 6 ;
} else if (arrKeyIndex[3 ] == 10 ) {
arrKeyIndex[3 ] = 5 ;
arrKeyIndex[4 ] = 7 ;
} else if (arrKeyIndex[3 ] == 11 ) {
arrKeyIndex[3 ] = 5 ;
arrKeyIndex[4 ] = 9 ;
} else if (arrKeyIndex[3 ] == 12 ) {
arrKeyIndex[3 ] = 5 ;
arrKeyIndex[4 ] = 16 ;
} else if (arrKeyIndex[3 ] == 13 ) {
arrKeyIndex[3 ] = 5 ;
arrKeyIndex[4 ] = 17 ;
} else if (arrKeyIndex[3 ] == 14 ) {
arrKeyIndex[3 ] = 5 ;
arrKeyIndex[4 ] = 18 ;
} else if (arrKeyIndex[3 ] == 17 ) {
arrKeyIndex[3 ] = 7 ;
arrKeyIndex[4 ] = 9 ;
} else {
arrKeyIndex[3 ] = KOR_KEY.indexOf(JONG_DATA.charAt(arrKeyIndex[3 ]));
arrKeyIndex[4 ] = -1 ;
}
}
for (var j = 0 ; j < 5 ; j++) {
if (arrKeyIndex[j] != -1 )
res += ENG_KEY.charAt(arrKeyIndex[j]);
}
}
return res;
}
-->
</script >
<hr />
출처 : http://www.theyt.net/wiki/한영타변환기
|
|