일반적으로 사용되는 문자열 인코딩의 중국어 표현은 GB2312, GBK, 유니코드, UTF-8입니다.
그중 GBK는 GB2312의 상위 집합입니다. 즉, GB2312 인코딩의 모든 내용을 포함합니다.
UTF- 8은 유니코드 네트워크 전송의 인코딩 형식입니다.
vc를 개발 도구로 사용하고 win에서 개발하는 경우 win
의 기본 문자 집합은 GBK이고 Symbian 시스템의 기본 인코딩 방법은 It입니다.
유니코드인데, 프로그램에서 직접 작성한 한자를 휴대폰에 표시하면
이 깨져서 문자가 된다는 뜻입니다.
이 문제를 해결하는 방법은 일반적으로 두 가지가 있습니다.
(1) 정적 리소스 파일 솔루션
(2) 동적 호출 문자 집합 변환 기능 솔루션
네, 첫 번째 솔루션으로 , RSS 파일을 수동으로 편집하고 한자 내용 부분을 UTF-8 형식으로 변경해야 합니다.
RSS 파일의 끝이나 시작 부분에 CHARACTER_SET UTF8을 추가하세요.
이런 종류의 문자열이 단점입니다. 일반적으로 정적 자원을 위한 것이므로 데이터 변경에 따라 한자가 수시로 업데이트되는 상황이라면
두 번째 경우를 고려해야 합니다
두 번째 경우는 동적으로 변환하는 방법입니다. 문자 세트
는 종종 CCnvCharacterSetConverter를 사용하고 두 클래스 CnvUtfConverter는 Symbian 시스템에서 인식되는 유니코드 인코딩으로 변환합니다.
CCnvCharacterSetConverter 클래스는 Symbian
CnvUtfConverter 클래스에서 지원하는 모든 인코딩을 변환할 수 있습니다. UTF-8을 유니코드로, UTF-7을 유니코드로 변환하거나 그 반대로 변환하는 데 자주 사용됩니다.
헤더 파일 추가
#include
mmp charconv.lib에
LIBRARY를 추가합니다 // GBK를 유니코드로 변환하는 경우
이 두 단계가 완료되면 다음 두 기능을 다시 컴파일할 수 있습니다.
void CMcAppUi::ConvGbk2Uni(TDesC8& 원본, TDes& res) {
#ifndef __WINS__
RFs aFileServerSession;
aFileServerSession.Connect()
CCn vCharacterSetConverter::NewLC( )
if(converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierGbk,aFileServerSession)!=CCnvCharacterSetConverter::EAvailable)
User::Leave(KErrNotS 지원)
TInt state=CCnvCharacterSetConverter: :KStateDefault ;
TPtrC8 str( 원본 );
HBufC* iInfoText = HBufC::NewL( str.Length() )
TPtr16 ptr = iInfoText->Des(); >
s.Zero() ;
res .Copy(ptr) ;
CleanupStack::PopAndDestroy(); 🎜>#else
res.Format(_L("wayne len %d "), original.Length())
#endif
}
void CMcAppUi::ConvUni2Gbk(TDesC& 원본, TDes8& res ) {
#ifndef __WINS__
TInt state= CCnvCharacterSetConverter::KStateDefault ;
CCnvCharacterSetConverter* iConv ;
iConv = CCnvCharacterSetConverter::NewLC()
if(iConv->PrepareToConvertToOrFromL(KCharact) erSetIdentifierGbk,
iEikonEnv->FsSession())!= CCnvCharacterSetConverter::EAvailable)
User::Leave(KErrNotSupported);
iConv->ConvertFromUnicode(res, 원본, 상태);CleanupStack::PopAndDestroy() ;
#else
res.Format(_L8("wayne chen %s"), 원본)
#endif
}
특정 사용 방법 :
TBuf8 title16;
TBuf msg16; ;
msg8.Format(_L8("사용해주셔서 감사합니다")) ;
ConvGbk2Uni(msg8, msg16) ;
ShowInfoDialog(title16, msg16 ) ; 이제 title16과 msg16만 포함하면 됩니다. 16비트 유니코드 중국어 문자열
을 직접 표시할 수 있습니다.