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; }
댓글
댓글 쓰기