UTF-16からUTF-8あるいはその逆のコード変換を行うJavaScriptです.

UTF-16とUTF-8のコード変換

UTF-16U+ 例:ff5e
 
UTF-8 例:efbd9e

ソース

function Utf16toUtf8() {
	var n = parseInt('0x' + document.f.utf16.value);
	var out =
		(n < 0x80
			? toHex2(n)
			: (n < 0x800
				? toHex2(n >> 6 & 0x1f | 0xc0)
				: toHex2(n >> 12 | 0xe0) +
					toHex2(n >> 6 & 0x3f | 0x80)
			) + toHex2(n & 0x3f | 0x80)
		);
	document.f.utf8.value = out;
}
function Utf8toUtf16() {
	var b = document.f.utf8.value;
	var n =
		(b.length <= 2
			? hex2ToN(b,0)
			: (b.length <= 4
				? ((hex2ToN(b,0) & 0x1f) << 6) +
					 (hex2ToN(b,1) & 0x3f)
				: ((hex2ToN(b,0) & 0xf) << 12) +
					((hex2ToN(b,1) & 0x3f) << 6) +
					(hex2ToN(b,2) & 0x3f)
			)
		);
	document.f.utf16.value = toHex4(n);
}
function toHex2(num) {
	var out = '0' + num.toString(16);
	return out.slice(-2);
}
function toHex4(num) {
	var out = '000' + num.toString(16);
	return out.slice(-4);
}
function hex2ToN(str, index) {
	var sb = str.substring(index * 2, index * 2 + 2);
	return parseInt('0x' + sb);
}

参考資料

UCS-2とUTF-8
http://homepage1.nifty.com/nomenclator/unicode/ucs_utf.htm

カモランド内では,このページではC++言語で似たようなことをやっています

kamolandをフォローしましょう


© 2017 KMIソフトウェア