한글 인코딩 관련 질문드립니다.
글쓴이: mediassu / 작성시간: 월, 2019/01/28 - 3:37오후
아래의 코드에서 wstr_t는 wstring 이고
for문에서 한글자씩 넘기는데 해당 i값을 sizeof해서 보면 2바이트입니다.
한글이고 애초에 유니코드라서 2바이트로 인식되면 안되는 문자열인데
한글자씩 넘기면 2바이트로 넘어가네요
value에 있는 값은 아래와 같습니다.
[0] : 44032 '가'
[1] : 44032 '가'
[2] : 44048 '감'
고수님들 답변 부탁드려봅니다.
void Stream::operator << (const wstr_t value)
{
*this << (Int32)(value.length());
for (auto i : value) {
*this << i;
}
}
:
:
:
void Stream::operator << (const T &value)
{
STREAM_WRITE(value);
}
:
:
:
#define STREAM_WRITE(value) \
INT32 size = sizeof(value); \
if (this->checkWriteBound(size) == false) { \
return; \
} \
memcpy_s((void *)(stream_.data() + offset_), stream_.size() - offset_, (const void *)&value, size);\
offset_ += size;
Forums:
wchar_t, wstring과 유니코드는 별 상관이
wchar_t, wstring과 유니코드는 별 상관이 없어서 생기는 문제입니다.
유니코드 스트링에 대한 처리가 필요하다면 icu같은 라이브러리를 알아보세요.
댓글 달기