잠시만 기다려 주세요

     '왜 이재명은 자꾸만 국민들 보고 길바닥에 나가라고 하는 건가.. 정작 당신들은 뜨뜻한 곳에서 입만 나불거리고 있으면서...'
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (16)  |  여러가지 팁 (1056)  |  추천 및 재미 (151)  |  자료실 (22)  |  
시사, 이슈, 칼럼, 평론, 비평 (600)  |  끄적거림 (129)  |  문예 창작 (705)  |  바람 따라 (69)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    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 &lt;030&gt; - 한/영타 변환기</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;

		// 실제 Key Index로 변경. 초성은 순서 동일
		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/한영타변환기
| |





      1 page / 3 page
번 호 카테고리 제 목 이름 조회수
76 javascript/jquery , . 바다아이 6956
75 javascript/jquery , . , 바다아이 5144
74 javascript/jquery javascript , ... 바다아이 6877
73 javascript/jquery , cookie class 바다아이 7397
72 javascript/jquery select 3 바다아이 8378
71 javascript/jquery , ... 바다아이 7816
70 javascript/jquery , timezone, , ... moment.js 바다아이 9955
69 javascript/jquery textarea cursor . focus, cursor ... 바다아이 10075
68 javascript/jquery (block) , ... 바다아이 8175
67 javascript/jquery textarea cursor , , focus 바다아이 11283
66 javascript/jquery jquery ajax option .... 바다아이 8511
65 javascript/jquery jquery open api , ajax JSONP cross domain , , error 0 ... sop 바다아이 8216
64 javascript/jquery javascript , , , , () 바다아이 9110
63 javascript/jquery javascript (date ) 바다아이 9254
62 javascript/jquery CSS3 javascript 바다아이 10008
61 javascript/jquery javascript , cookie, , , , , 바다아이 9298
60 javascript/jquery javascript 바다아이 9876
현재글 javascript/jquery javascript / , , , 바다아이 12935
58 javascript/jquery url , , encode, decode ... 바다아이 8381
57 javascript/jquery javascript ... frame location.href 바다아이 13936
56 javascript/jquery File Upload Progress, .... . 바다아이 8827
55 javascript/jquery javascript, json , json Highlight 바다아이 9008
54 javascript/jquery javascript json , , JSON.stringify, JSON.parse, 바다아이 10323
53 javascript/jquery javascript innerHTML, innerTEXT ... 바다아이 9089
52 javascript/jquery javascript entity , , encode, decode 바다아이 9276
51 javascript/jquery javascript post, get , 바다아이 10541
50 javascript/jquery text copy, , How to copy a TEXT to Clipboard on a Button-Click 바다아이 9347
49 javascript/jquery jquery autocomplete , , . 바다아이 8938
48 javascript/jquery javascript, jquery, , autocomplete 바다아이 9918
47 javascript/jquery substring, substr, indexOf, lastIndexOf (javascript , , ) 바다아이 9200
| |









Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천  실행시간 : 0.06325
to webmaster... gogo sea. gogo sea.