V8 Javascript 엔진을 이용해서 이전 프로젝트에서도 진행했었는데.. 그때는 한글문제가 없었나..?
어째든 이번에도 막바지에 이르러 한글 출력 문제 해결한 내용을 정리해두기로 한다.
여기 메소드의 예는 javascript 에서 실행도중 debug 메시지 출력을 위해서 debugOut()라는 네이티브 함수를 호출하게 되는데 이때 한글을 전달한 경우 C++ 코드에서 이른 정상적으로 디코딩 하기 위한 방법이다.
개발 상황은 다음과 같다.
1. QtSDK 4.8.4 with MS Visual Studio 2010 환경이다.
2. V8 엔진에서 컴파일해서 실행할 javascript 파일은 UTF-8로 인코딩 되어있다.
3. Javascript 에서 Native c++ 에서 만든 debugOut()라는 함수를 호출하는 상황.
한글 처리 방법
1. 우선 Javascript 소스파일을 읽어드릴때 UTF-8 디코딩이 잘되어야 겠다.
2. c++코드에서는 자바스크립트로 부터 호출되어 넘겨받은 UTF-8 문자열을 WString 으로 변환해야 한다.
3. 그리고 WString을 (char *)형으로 변환하고 다시 QString으로 변환(QString::fromUtf16)하여 넣는다.
static v8::Handle<v8::Value> debugOut(const v8::Arguments& args){
...
v8::String::Utf8Value msg(args[0]);
std::wstring_convert<std::codecvt_utf8<wchar_t>> utf8ToWString;
auto wstr = utf8ToWString.from_bytes(*msg);
qDebug() << QString::fromUtf16((const ushort *)wstr.c_str());
return v8::Undefined();
}
결과적으로 보면 별거없는데 이러한 제대로된 변환순서를 찾는 삽질을 할때는 ....
'개발' 카테고리의 다른 글
QT Installer 1.3 바이너리 배포버전 버그있다... (0) | 2013.04.17 |
---|---|
QtSDK 사용시 log4cplus 에서 한글(Korean) 문제 (Windows 환경) (0) | 2013.04.02 |
(JQuery UI Plugin) jqGrid 웹(HTML) GRID 컴포넌트 사용 방법 (0) | 2013.02.17 |
V8 Javascript Engine Build with GYP and MSVC 2010 on Windows (V8 빌드, 윈도우에서 컴파일 하기) (2) | 2012.08.08 |
Visual Studio 2010 에서 QT 어플리케이션 개발 하기 (0) | 2012.07.12 |