Qt_IM_26 - 8BitsCoding/RobotMentor GitHub Wiki


ASCII vs UTF-8

์šฐ์„  ์œ ๋‹ˆ์ฝ”๋“œ(Unicode)๋ฅผ ๋จผ์ € ์•Œ์•„์•ผ ํ•œ๋‹ค.

์œ ๋‹ˆ์ฝ”๋“œ๋Š” ์ธ์ฝ”๋”ฉ์˜ ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ ๋ฌธ์ž์—ด์˜ ๋งคํ•‘์ด๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด A = U+0041, ๊ฐ€ = U+AC00์œผ๋กœ ๋งคํ•‘๋˜์–ด ์žˆ๋‹ค.

์ด ๋งคํ•‘ ๋ฐฉ๋ฒ• ์ค‘ ๋ช‡๊ฐ€์ง€๊ฐ€ UTF-8, UTF-16 ... ๋“ฑ์ด ์žˆ๋‹ค.

UTF-8

ASCII ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ๋งคํ•‘ ๋ฐฉ๋ฒ• ์ค‘ํ•˜๋‚˜

์˜์–ด์˜ ๊ฒฝ์šฐ ๊ทธ๋Œ€๋กœ ASCII ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ 

ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ 3๋ฐ”์ดํŠธ๋กœ ๋งคํ•‘์ด ๋˜์—ˆ๋Š”๋ฐ ์–ธ์–ด์— ๋”ฐ๋ผ 1~4๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์— UTF์™€ ๊ฐ™์€ ๋งคํ•‘ ๋ฐฉ์‹์„ ๊ฐ€๋ณ€ ํ‘œ๊ธฐ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ด๋ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด '๊ฐ€'๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ•œ๊ธ€์€ 3๋ฐ”์ดํŠธ๊ฐ€ ํ• ๋‹น๋˜์—ˆ๊ธฐ์— 1110xxxx 10xxxxxx 10xxxxxx์˜ x์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ฉด๋œ๋‹ค.

'๊ฐ€' = U+AC00 = 0xAC00 = 44,032 = 10101100 00000000 ์„ ์œ„ ๋ฐ์ดํ„ฐ์— ์ˆœ์„œ๋Œ€๋กœ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

์ด๋ฏธ์ง€


#include <QtCore/QCoreApplication>

#include <qdebug.h>
#include <qfile.h>
#include <qdir.h>
#include <qtextstream.h>
#include <qrandom.h>

/*
UTF-8 is a variable width character encoding capable of encoding all 1,112,064 valid code points in 
Unicode using one to four 8-bits bytes.
The encoding is defined by Unicode standard, and was originally designed by Ken Thopson and Rob Pike.
Called "Unicode"
*/

QString makeData() {
	QString data;

	data.append("Unicode test\r\n");
	for (int i = 0; i < 10; i++) {
		int number = QRandomGenerator::global()->bounded(1112064);
		data.append(number);
	}
	data.append(10);		// \r
	data.append(13);		// \n
	// data.append("\r\n");

	return data;
}

int main(int argc, char *argv[])
{
	QCoreApplication a(argc, argv);

	QString data = makeData();
	QString path = QDir::currentPath() + QDir::separator() + "data.txt";

	QFile file(path);
	if (file.open(QIODevice::WriteOnly)) {
		QTextStream stream(&file);

		stream.setCodec("UTF-8");
		stream << data;
		stream.flush();

		file.close();
	}

	qInfo() << "Done";
	qInfo() << "Unicode:" << data;
	qInfo("");
	qInfo() << "ASCII" << data.toLatin1();

	return a.exec();
}

์ด๋ฏธ์ง€

Unicode์˜ ๊ฒฝ์šฐ ์‚ฝ์ž…ํ•œ ๋žœ๋ค๋„˜๋ฒ„๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ˜๋ฉด

ASCII์˜ ๊ฒฝ์šฐ ๋žœ๋ค๋ค๋ฒ„๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ๋ชปํ•œ๋‹ค.(๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ)

โš ๏ธ **GitHub.com Fallback** โš ๏ธ