DARS문서를 읽다 보면 극동 지역(중국,일본,한국)에서 사용하는 문자를 읽는 방법이 나와있는데, 이를 간략하게 정리한 것입니다.
우선 Multi-Bytes 문자의 시작은 '&~'로 시작이 되고, ' &'로 종료가 된다.
그리고 Multi-Bytes 문자들('&~'와 ' &'사이에 들어 있는 문자들)은 각각에 128을 더한 문자를 취하면 됩니다. 지극히 간단합니다.
한가지 주의할 사항은 '&~'와 ' &'사이에 들어 있는 &~ 은 Multi-Bytes 문자의 시작을 가리키는 것이 아니라 문자 그 자체가 된다는 것입니다.
아래는 Multi-Bytes 문자를 읽는 코드입니다.
우선 Multi-Bytes 문자의 시작은 '&~'로 시작이 되고, ' &'로 종료가 된다.
그리고 Multi-Bytes 문자들('&~'와 ' &'사이에 들어 있는 문자들)은 각각에 128을 더한 문자를 취하면 됩니다. 지극히 간단합니다.
한가지 주의할 사항은 '&~'와 ' &'사이에 들어 있는 &~ 은 Multi-Bytes 문자의 시작을 가리키는 것이 아니라 문자 그 자체가 된다는 것입니다.
아래는 Multi-Bytes 문자를 읽는 코드입니다.
/**
@brief parsing multi-byte characters
@author CJH , BHK
@date 2009.06.23
*/
string CAccessPdms::FECS(const string &istr)
{
string ostr;
bool LFECS = false;
for(int i = 0;i < istr.length();++i)
{
if('&' == istr[i])
{
if(((i + 1) < istr.length()) && ('~' == istr[i+1]) && (false == LFECS))
{
LFECS = true;
i++;
continue;
}
else if(((i + 2) < istr.length()) && ('&' == istr[i+1]) && ('~' == istr[i+2]))
{
ostr += "&~";
i += 2;
continue;
}
}
else if(' ' == istr[i])
{
if(((i+1) < istr.length()) && ('&' == istr[i+1]))
{
LFECS = false;
++i;
continue;
}
}
ostr += LFECS ? char(int(istr[i]) + 128) : char(istr[i]);
}
return ostr;
}
댓글
댓글 쓰기