헬마입니다.

이것도 이번에 프로젝트 중에 만든겁니다.

기능은 문자열간에 인코딩을 편하게 좀 바꿔보자가 만들었습니다.

내장 DB로 주로 SQLite 를 사용하거나, 또는 플렉스 라는 넘이 UTF8만 준다더군요.

그래서 UTF8 변환할 일이 좀 많아져서 만들었네요.

간단한 사용법


// ANSI, 또는 UNICODE 에서 UTF8 로 변환하기 
std::string strText;
std::wstring strTextW;

CT2U8(strText).GetUTF8();
CT2U8(strTextW).GetUTF8();

// UTF8 에서 ANSI, UNICODE 로 변환
std::string strText8;

CU8T2(strText8).GetUTF16();
CU8T2(strText8).GetMBCS();

// GetUTF16 , GetMBCS 함수는 CT2U8, CU8T2 클래스 모두에 선언되어 있으니 편할 때 아무거나 선언해서 사용하시면 됩니다. 
// 오히려 전 만들어놓고 보니 ANSI < - > UNICODE 변환에 더 많이 사용하게 되네요. ^^




댓글을 달아 주세요

  1. NCC 2009.07.01 10:46 Address Modify/Delete Reply

    참고 하겠습니다. 좋은자료 감사합니다.

  2. BlogIcon 크키 2010.04.01 14:29 Address Modify/Delete Reply

    굿!잡! 입니다.
    ^^ 잘쓰겠습니다.

  3. ㅁㄴㅇㄹ 2012.08.23 20:47 Address Modify/Delete Reply

    Util에서 isAlphabet가 잘못된 것 같네요.

    for문을 돌릴때 isalpha() 이면 return true를 하는게 아니라
    for문을 돌리는 와중에 !isalpha() 이면, 즉 캐릭터 하나라도 alpha가 아니면 return false를 하고 for문 바깥 마지막에 return true를 해야 std::wstring 또는 std::string 전체에 대한 isalpha 검사가 될 듯 싶습니다

  4. a 2012.12.05 14:28 Address Modify/Delete Reply

    1. DeletePtr, DeletePtrA 함수는 의미가 없습니다. delete나 delete[]연산 안에 이미 nullptr 검사 루틴이 있기 때문이고
    2. 영문 윈도 등에서는 Korean_Korea 로캘을 찾지 못해 생성자에서 예외가 던져집니다.
    3. 복사 생성자도 제대로 정의되어있지 않는 것은 물론이고, 문자열을 새로 대입할 때 다른 모든 멤버도 똑같이 초기화를 다시 해 주어야 합니다.
    4. 심지어 UTF8에서 Ansi, Unicode로 변환하는 클래스는 제대로 짜여져있지도 않습니다.
    5. isAlphabet 잘못된 건 윗 분이 지적해주셨으니 패스

    혹시나 이 코드 가져다 쓰실 분들에게 참고가 되라고 남깁니다.